Android 使用文件提供程序获取存储在SD卡上的图像的内容URI
我有一个存储在sd卡中的图像文件,其绝对路径为-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
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" />