파일 제공자를 사용하여 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"));
을하는 PDF 뷰어 내에서이 열려? – Simon
@Simon 필자가 사용한 모든 PDF 뷰어에서 잘 작동하지만'GetTempPath'를 사용하여 원하는 파일 이름을 추가 할 수 있습니다 .. i.e.'var savePath = Path.Combine (Path.GetTempPath(), pdfAssetName); ' – SushiHangover
나는 그저 어제와 함께 일했다 ... 그리고 당신의 해결책은 여전히 나에게 똑같은 문제를 주었다. 더 살펴보면 사용 권한 문제가 있음을 발견했습니다. 수신 응용 프로그램에서 사용 권한 거부가 발생했습니다. URI 권한 부여를 통해이 문제가 해결되었으며 원래 코드를 사용할 수 있습니다. 작동하는 경우 내부 저장소를 사용하는 것이 잘못 되었습니까? – Simon