请注意,如果你的targetSdkVersion为24或更高,我们必须使用FileProvider类给访问特定文件或文件夹,以让其他应用程式存取。
第1步:在应用标签下的AndroidManifest.xml中添加一个FileProvider标签。
<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>
步骤2:
然后创建res文件夹下的文件夹的xml一个provider_paths.xml文件。如果文件夹不存在,可能需要创建它。该文件的内容如下所示。它描述了我们希望在名称为external_files的根文件夹(path =“。”)中共享对外部存储的访问。
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
</paths>
步骤3:的最后一步是要改变的下面的代码行中
Uri photoURI = Uri.fromFile(outputFile);
到
Uri uri = FileProvider.getUriForFile(PdfRendererActivity.this, PdfRendererActivity.this.getPackageName() + ".provider", outputFile);
步骤4(可选):
如果使用意图使t他系统打开你的文件,你可能需要添加以下代码行:
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
希望这将有助于:)
我在这里有一个相关的问题:https://stackoverflow.com/questions/45901768/how-to-share-pdf-through-whatsapp-to-an-unsaved-contact –