首页 > 解决方案 > 如何在 xmarine android c# App 中显示内部存储自定义文件夹中的 pdf?

问题描述

我想在我的应用程序中下载(从内部存储自定义文件夹)后显示 pdf 文件。我希望用户可以选择他们喜欢的应用程序来打开它。我使用了下面提到的代码,但它不起作用。我怎样才能做到这一点? 在此处输入图像描述

string fileName = "qdummy.pdf";
Android.Net.Uri uri = Android.Net.Uri.Parse("file:///storage/emulated/0/TESTFOLDER/" + fileName);
Intent intent = new Intent(Intent.ActionView);
intent.SetDataAndType(uri, "application/pdf");
intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask);

try
{
    Application.Context.StartActivity(intent);
}
catch (Exception)
{
    Toast.MakeText(Application.Context, "No hay aplicacion instalada para ver PDF", ToastLength.Long).Show();
} 

标签: c#androidpdfstorageandroidpdfviewer

解决方案


解决的问题,

try
                    {
                        string extension = MimeTypeMap.GetFileExtensionFromUrl(Android.Net.Uri.FromFile(file).ToString());
                        string mimeType = MimeTypeMap.Singleton.GetMimeTypeFromExtension(extension);
                        Intent intent = new Intent(Intent.ActionView);
                        intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.NewTask);
                        Android.Net.Uri path = FileProvider.GetUriForFile(Application.Context, Android.App.Application.Context.PackageName + ".provider", file);
                        intent.SetDataAndType(path, mimeType);
                        intent.AddFlags(ActivityFlags.GrantReadUriPermission);
                        Application.Context.StartActivity(Intent.CreateChooser(intent, "Choose App"));
                    }
                    catch (Exception ex)
                    {
                        Toast.MakeText(Application.Context, "problem", ToastLength.Long).Show();
                    }

推荐阅读