我对android FileProvider有疑问。
我想保存一个pdf文档,并使用默认程序打开它。
我不想将其保存在外部存储中。
将PDF成功保存到FilesDirectory / export / temp.pdf后,
我尝试使用FileProvider.getUriForFile()生成URI。
File path = new File(getFilesDir(), "export");
File pdf = new File(path + File.separator + "temp.pdf");
pdf.getParentFile().mkdirs();
if (!pdf.exists())
pdf.createNewFile();
Uri uri = FileProvider.getUriForFile(getApplicationContext(), "?", pdf);
问题:作为第二个参数“ Authority”,我必须传递什么-我的文件的位置,可以授予URI-Permissions的类或其他内容?无论我尝试过什么,都会导致IllegalArgumentException或NullPointerException。
我的FileProvider(XML):
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.example.myApp.myActivity"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_path"/>
</provider>
参考文件:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="pdfTemplates" path="export/" />
</paths>
最佳答案
我懂了。有两个不同的问题
CodeDiving回答了第一个问题。
我必须使用提供者声明中的Authority来进行getUriForFile调用。使用其他类导致NullPointerException。
我试图从filesDirectory获取文件,但是在我的file_path中,我仅声明了用于缓存Directory的路径。我将其更改为“ files-path”,并且有效。此错误导致IllegalArgumentException。
关于pdf - Android Fileprovider:IllegalArgumentException:无法找到包含以下内容的已配置根目录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20263428/