C# Xamarin文件提供商可以';无法在Android中打开文件

C# Xamarin文件提供商可以';无法在Android中打开文件,c#,xamarin.forms,android-fileprovider,C#,Xamarin.forms,Android Fileprovider,在我的Xamarin表单应用程序中,我创建了可以用Android应用程序打开的PDF 使用安卓7的设备一切正常,现在我已经用安卓8测试过了,文件无法打开 我已安装Xam.PluginMedia并保留所有默认设置: 在Main活动中,我已使用以下内容覆盖OnRequestPermissionsResult函数: Plugin.Permissions.permissionsSimplementation.Current.OnRequestPermissionsResult(请求代码、权限、Grant

在我的Xamarin表单应用程序中,我创建了可以用Android应用程序打开的PDF

使用安卓7的设备一切正常,现在我已经用安卓8测试过了,文件无法打开

我已安装Xam.PluginMedia并保留所有默认设置:

在Main活动中,我已使用以下内容覆盖OnRequestPermissionsResult函数:

Plugin.Permissions.permissionsSimplementation.Current.OnRequestPermissionsResult(请求代码、权限、GrantResult)

文件_paths.xaml是:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-files-path name="my_images" path="Pictures" />
    <external-files-path name="my_movies" path="Movies" />
</paths>
生成的文件位于以下路径下:
Android/data/MY_PACKAGE\u ID/files/GeneratedReports

我附上了一个视频来展示实际的行为

我找到了一个样本

文件_paths.xml
中,节点的“path”值必须以“/”开头

因此,对于这个节点:
我的代码有效


我还需要删除
MyIntent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask)

您的
应用程序ID
与您使用的软件包相同吗?试着用手写,再试一次我,谢谢你,我已经试着用手写了,但问题仍然存在。我花了半天的时间才把它做好。去掉你上面提到的那条线对我来说是个好办法。非常感谢,你让我开心!
<provider android:name="android.support.v4.content.FileProvider" 
    android:authorities="${applicationId}.fileprovider" 
    android:exported="false" 
    android:grantUriPermissions="true">
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths"></meta-data>
public void OpenPreviewFile(string FilePath)
{

    Java.IO.File JavaFile = new Java.IO.File(FilePath);   

    Android.Net.Uri Path = FileProvider.GetUriForFile(global::Android.App.Application.Context, global::Android.App.Application.Context.PackageName + ".fileprovider", JavaFile);

    string Extension = global::Android.Webkit.MimeTypeMap.GetFileExtensionFromUrl(Path.ToString());
    string MimeType = global::Android.Webkit.MimeTypeMap.Singleton.GetMimeTypeFromExtension(Extension);
    Intent Intent = new Intent(Intent.ActionView);

    Intent.SetDataAndType(Path, MimeType);
    Intent.AddFlags(ActivityFlags.GrantReadUriPermission);
    Intent.SetFlags(ActivityFlags.ClearWhenTaskReset | ActivityFlags.NewTask);

    try
    {
        MainActivity.AppInstance.StartActivity(Intent.CreateChooser(Intent, TS.Translate("ANDROID_ScegliApp")));
    }
    catch (System.Exception)
    {
        Toast.MakeText(MainActivity.AppInstance, TS.Translate("ANDROID_ImpossibileAprireIlFIle"), ToastLength.Short).Show();
    }
}