【发布时间】:2019-04-15 17:47:18
【问题描述】:
我正在尝试默认打开 pdf 文件 pdf 查看器 xamarin 表单,但出现异常:
Android.OS.FileUriExposedException: file:///storage/emulated/0/pdfy/pdfik.pdf 暴露在应用程序之外 Intent.getData()
我添加了 READ_EXTERNAL_STORAGE 和 WRITE_EXTERNAL_STORAGE 权限,并且:
while (ContextCompat.CheckSelfPermission(this, Manifest.Permission.WriteExternalStorage) != (int)Permission.Granted)
{
ActivityCompat.RequestPermissions(this, new string[] { Manifest.Permission.WriteExternalStorage }, 0);
}
while (ContextCompat.CheckSelfPermission(this, Manifest.Permission.ReadExternalStorage) != (int)Permission.Granted)
{
ActivityCompat.RequestPermissions(this, new string[] { Manifest.Permission.ReadExternalStorage}, 0);
}
这就是我尝试打开文件的方式:
public bool OpenFile(string filename)
{
Android.Net.Uri uri = Android.Net.Uri.FromFile(new Java.IO.File(filename));
Intent intent = new Intent(Intent.ActionView);
String mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension(MimeTypeMap.GetFileExtensionFromUrl((string)uri).ToLower());
intent.SetDataAndType(uri, mimeType);
intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask);
try
{
Xamarin.Forms.Forms.Context.StartActivity(intent);
//ApplicationContext.StartActivity(intent);
return true;
}
catch (System.Exception ex)
{
Toast.MakeText(Xamarin.Forms.Forms.Context, "No Application Available to View this file", ToastLength.Short).Show();
//Toast.MakeText(ApplicationContext, "No Application Available to View this file", ToastLength.Short).Show();
return false;
}
}
【问题讨论】:
标签: c# xamarin xamarin.forms xamarin.android