android.os.FileUriExposedException错误-XAMARIN

时间:2018-10-16 11:33:09

标签: xamarin xamarin.forms xamarin.android

我正在尝试执行文件选择器,它可与较低的SDK版本一起使用,但在这种情况下(Android 7.1)它需要FileProvider。

问题是我在互联网上看到了很多答案,我认为我的代码完全可以。你怎么看?为什么我在课堂上找不到对FileProvider的引用?

希望有人知道为什么这对我不起作用,这是代码:

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.companyname.AppQ4evo" android:installLocation="preferExternal">
    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="27" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.CONTROL_LOCATION_UPDATES" />
    <uses-permission android:name="android.permission.LOCATION_HARDWARE" />
    <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <application android:label="AppQ4evo.Android" android:icon="@drawable/srw_circular">
    <provider
            android:name="android.support.v4.content.FileProvider" 
            android:authorities="${applicationId}.com.companyname.AppQ4evo.fileprovider"
            android:grantUriPermissions="true"
            android:exported="false">

            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/filepaths" />
    </provider>

  </application>
</manifest>

资源/xml/filepaths.xml:

<?xml version="1.0" encoding="utf-8" ?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external_files" path="."/>
</paths>

EDIT1(错误):

enter image description here

1 个答案:

答案 0 :(得分:0)

所以这不容易发现,但是看起来我需要添加此扩展范围:

https://marketplace.visualstudio.com/items?itemName=EgorBogatov.XamarinGradleBindings#qna

通过加载项,您现在可以直接向android添加引用,并从java中添加引用(在我的情况下为 FileProvider )。

与此相关的教程就在github上的此链接中:

https://github.com/EgorBo/Xamarin.GradleBindings

希望它可以帮助解决此问题的人。