c# - 如何在 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();
}
解决方案
解决的问题,
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();
}
推荐阅读
- r - 变量名 T 高亮显示是什么意思?
- c++ - 为了使函数返回编译时常量值,模板中是否需要 constexpr const 类型?
- arduino-c++ - 如果它是打开或关闭,我如何制作一个状态,它出现在客户端的 html 中
- r - coxph:“dimnames”[2] 的长度不等于数组范围
- javascript - 导入 React 组件并使用其方法不起作用
- c++ - 将二维向量的一行连接到 C++ 中的另一行
- c - c中的线程安全随机数生成器
- javascript - React Hooks:输入组件(Semantic-ui-react)的值在重新渲染后不会改变
- python - 通过 Windows cmd 在 Anaconda 环境中运行 python 脚本
- javascript - 根据组合框 Ext JS 中的选定选项显示文本