【发布时间】:2019-03-22 14:55:06
【问题描述】:
我查看了 StackOverflow 上的所有答案,但没有答案。
真实设备和模拟器同样的错误。
Fileprovider 总是抛出 IllegalArgumentException
有清单
<application
...
<provider
android:name="android.support.v4.content.FileProvider"
android:grantUriPermissions="true"
android:exported="false"
android:authorities="${applicationId}">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/filepath"/>
</provider>
</application>
有filepath.xml
<paths>
<files-path
name="logs"
path="logs/" /></paths>
而且有些代码总是抛出异常
final Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
File file = new File(logger.getFileName());
Uri uri = null;
try {
uri = FileProvider.getUriForFile(getContext(), BuildConfig.APPLICATION_ID, file);
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
logger.getFileName() - 返回真实文件名,例如:“logs_22032019.txt”
我已经尝试过的: 清单中的更改,例如: android:authorities="com.realname.of.package" filepath.xml 的变化
name="logs"
-
1) 文件名相同 2) 只是 /
path="logs/"
1) 。 2) / 3) 完整路径 4) 文件 5) /files 6) 文件/ e.t.g
我注意到了——确实有文件的路径:
/data/user/0/com.app.realname/files/log.txt
但其中的 FileProvider 转到:
"log.txt" -> "/data/data/com.app.realname/files/log.txt"-->
注意:我只需要内部存储空间。
【问题讨论】:
标签: android android-intent android-fileprovider internal-storage android-internal-storage