請注意,如果你的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 –