Android 无法从FileProvider保存文件
我正在从android应用程序捕获图像,并使用Android 无法从FileProvider保存文件,android,android-6.0-marshmallow,android-7.0-nougat,Android,Android 6.0 Marshmallow,Android 7.0 Nougat,我正在从android应用程序捕获图像,并使用Fileprovider将图像保存在外部存储器中。但它给了我一个例外如下 java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.rocketstove/files/SAMS/JMC-R-1256655/application_form_first.jpg 我在androidManifest中配置了如下提供程序
Fileprovider
将图像保存在外部存储器中。但它给了我一个例外如下
java.lang.IllegalArgumentException:
Failed to find configured root that contains /data/data/com.rocketstove/files/SAMS/JMC-R-1256655/application_form_first.jpg
我在androidManifest中配置了如下提供程序
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
编辑
文件路径
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_files"
path="." />
</paths>
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="external_files" path="Android/data/com.rocketstove.files/"/>
</paths>
错误
我还在文件路径中添加了以下行
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_files"
path="." />
</paths>
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="external_files" path="Android/data/com.rocketstove.files/"/>
</paths>
您有外部路径
。缔约国指出:
表示外部存储区域根目录中的文件。此子目录的根路径与Environment.getExternalStorageDirectory()返回的值相同
这不是您的文件所指向的位置
将外部路径
更改为文件路径
,因为Java代码使用getFilesDir()
我还在文件路径中添加了以下行
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="external_files"
path="." />
</paths>
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-files-path name="external_files" path="Android/data/com.rocketstove.files/"/>
</paths>
您有外部路径
。缔约国指出:
表示外部存储区域根目录中的文件。此子目录的根路径与Environment.getExternalStorageDirectory()返回的值相同
这不是您的文件所指向的位置
将external path
更改为files path
,因为您的Java代码使用getFilesDir()
,但我需要存储在外部存储器上。@BibekShakya:那么不要使用getFilesDir()
。理想情况下,使用getExternalFilesDir()
,然后将外部路径
更改为外部文件路径
@BibekShakya:这应该是对不同文件路径的抱怨。否则,您没有更改Java代码。它正在使用Java.lang.IllegalArgumentException:未能找到包含/storage/emulated/0/Android文件路径(即内部存储)的已配置根,然后您可以使用外部路径和外部文件路径。正如函数名告诉您的那样,GetExternalFileDir()提供外部存储。但我需要存储在外部存储上。@BibekShakya:然后不要使用GetFileDir()
。理想情况下,使用getExternalFilesDir()
,然后将外部路径
更改为外部文件路径
@BibekShakya:这应该是对不同文件路径的抱怨。否则,您没有更改Java代码。它正在使用Java.lang.IllegalArgumentException:未能找到包含/storage/emulated/0/Android文件路径(即内部存储)的已配置根,然后您可以使用外部路径和外部文件路径。正如函数名告诉您的那样,getExternalFilesDir()提供外部存储。