Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用文件提供程序获取存储在SD卡上的图像的内容URI_Android_Android Fileprovider - Fatal编程技术网

Android 使用文件提供程序获取存储在SD卡上的图像的内容URI

Android 使用文件提供程序获取存储在SD卡上的图像的内容URI,android,android-fileprovider,Android,Android Fileprovider,我有一个存储在sd卡中的图像文件,其绝对路径为-storage/4469-0C17/DCIM/…,另一个图像存储在内部存储器中,其绝对路径为-/storage/simulated/0/ 我正在使用FileProvider与外部应用程序共享它 现在,我可以共享存储在内部存储器中的图像,但对于存储在外部存储器中的图像,它会抛出一个错误- java.lang.IllegalArgumentException:未能找到包含/storage/4469-0C17/DCIM/ 我的舱单- <manife

我有一个存储在sd卡中的图像文件,其绝对路径为-
storage/4469-0C17/DCIM/…
,另一个图像存储在内部存储器中,其绝对路径为-
/storage/simulated/0/

我正在使用FileProvider与外部应用程序共享它

现在,我可以共享存储在内部存储器中的图像,但对于存储在外部存储器中的图像,它会抛出一个错误-
java.lang.IllegalArgumentException:未能找到包含/storage/4469-0C17/DCIM/

我的舱单-

<manifest>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application>
    .....
        <provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.provider"
            android:exported="false"
            android:grantUriPermissions="true">
                <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths" />
        </provider>
    </application>
</manifest>
以及另一个存储在具有绝对路径的内部存储器中的图像

这就是Android SDK所说的

但是对于存储在外部存储器中的图像,它会抛出一个错误- java.lang.IllegalArgumentException:未能找到包含/storage/4469-0C17/DCIM/…的配置根目录

首先,也就是说,不是外部存储

其次,
FileProvider
不支持可移动存储

以及另一个存储在具有绝对路径的内部存储器中的图像

这就是Android SDK所说的

但是对于存储在外部存储器中的图像,它会抛出一个错误- java.lang.IllegalArgumentException:未能找到包含/storage/4469-0C17/DCIM/…的配置根目录

首先,也就是说,不是外部存储


其次,
FileProvider
不支持可移动存储。

不要使用FileProvider,正如您所看到的,FileProvider非常有限,您最好从ContentProvider派生您自己的提供者

然后你可以提供你想要的任何文件


Commonware提供了一个很好的示例,说明如何设置这样的文件提供程序。

您最好从ContentProvider派生您自己的提供程序,而不是使用文件提供程序,正如您所看到的,文件提供程序非常有限

然后你可以提供你想要的任何文件


Commonware提供了一个很好的示例,说明如何设置这样的文件提供程序。

将以下内容添加到您的提供程序\u paths.xml中:

<root-path path="." name="external_files" />

将以下内容添加到您的提供商\u paths.xml中:

<root-path path="." name="external_files" />


在provider\u path.xml文件中而不是“.”中尝试“/”在provider\u path.xml文件中而不是“.”尝试“/”,这样在android N上我的应用程序无论如何都会崩溃?有什么方法可以支持它吗?@Harshit:AFAIK,你的应用程序没有直接访问
存储/4469-0C17/DCIM/
的文件系统,所以我不确定你是从哪里获得该路径的。所以在安卓N上,我的应用程序无论如何都会崩溃?有什么方法可以支持它吗?@Harshit:AFAIK,你的应用程序没有对
存储/4469-0C17/DCIM/
的直接文件系统访问权限,所以我不确定你是从哪里得到这个路径的。
<root-path path="." name="external_files" />