我試圖使用文件提供程序顯示PDF文件。但是,當PDF閱讀器打開時,它不包含文件的內容。該文件存儲在應用程序的內部存儲器中的文件夾中。FileProvider Xamarin不顯示文件
清單:
<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.mycom.myapp.fileprovider" android:exported="false" android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" />
</provider>
File_paths:
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<files-path name="export" />
</paths>
pdfViewRenderer.cs:
string libraryPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
var path = Path.Combine(libraryPath, fileName);
string application = "application/pdf";
Java.IO.File javaFile = new Java.IO.File(fileName);//externalPath
Android.Net.Uri androidURI = FileProvider.GetUriForFile(Forms.Context.ApplicationContext, "com.mycom.myapp.fileprovider", javaFile);
Intent intent = new Intent(Intent.ActionView);
intent.SetDataAndType(androidURI, Filetype);
intent.AddFlags(ActivityFlags.GrantReadUriPermission);
intent.SetFlags(ActivityFlags.NoHistory);
intent.SetFlags(ActivityFlags.ClearWhenTaskReset);
Forms.Context.StartActivity(Intent.CreateChooser(intent, "Open PDF"));
這看起來不錯,但其結果產生的.tmp將一個PDF瀏覽器中這種開放? – Simon
@Simon對我使用過的所有PDF查看器都很好,但是您可以使用'GetTempPath'並添加您選擇的文件名.. i..e.'var savePath = Path.Combine(Path.GetTempPath(),pdfAssetName );' – SushiHangover
我昨天就和它一起工作......而且你的解決方案很好,但是仍然給我帶來了同樣的問題。進一步看,我發現有一個權限問題。接收應用程序正在獲得權限拒絕。通過授予URI許可,這解決了它,我可以使用我的原始代碼..我使用內部存儲如果它的工作是錯誤的嗎? – Simon