Android 无法从FileProvider保存文件

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中配置了如下提供程序

我正在从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中配置了如下提供程序

<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()提供外部存储。