【问题标题】:await CrossFilePicker.Current.PickFile() not working for pdf files等待 CrossFilePicker.Current.PickFile() 不适用于 pdf 文件
【发布时间】:2022-01-27 18:26:38
【问题描述】:

我正在使用 await CrossFilePicker.Current.PickFile() 在 xamarin 表单中选择文件,但它不适用于 pdf 文件,我收到以下异常:

Exception : 

at Java.Interop.JniEnvironment+InstanceMethods.CallNonvirtualObjectMethod (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type, Java.Interop.JniMethodInfo method, Java.Interop.JniArgumentValue* args) [0x0008e] in <24e422c426e0468ca1fd74b59870ff08>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualObjectMethod (System.String encodedMember, Java.Interop.IJavaPeerable self, Java.Interop.JniArgumentValue* parameters) [0x0001f] in <24e422c426e0468ca1fd74b59870ff08>:0 
  at Android.Content.ContentResolver.Query (Android.Net.Uri uri, System.String[] projection, System.String selection, System.String[] selectionArgs, System.String sortOrder) [0x000a0] in /Users/builder/azdo/_work/278/s/xamarin-android/src/Mono.Android/obj/Release/monoandroid10/android-28/mcw/Android.Content.ContentResolver.cs:1096 
  at Plugin.FilePicker.IOUtil.GetDataColumn (Android.Content.Context context, Android.Net.Uri uri, System.String selection, System.String[] selectionArgs) [0x00013] in D:\a\1\s\src\Plugin.FilePicker\Android\IOUtil.android.cs:154 
  at Plugin.FilePicker.IOUtil.GetPath (Android.Content.Context context, Android.Net.Uri uri) [0x0017d] in D:\a\1\s\src\Plugin.FilePicker\Android\IOUtil.android.cs:111 
  at Plugin.FilePicker.FilePickerActivity.OnActivityResult (System.Int32 requestCode, Android.App.Result resultCode, Android.Content.Intent data) [0x00054] in D:\a\1\s\src\Plugin.FilePicker\Android\FilePickerActivity.android.cs:168 

我该如何解决这个问题?

【问题讨论】:

  • “不工作”不是对问题的有用描述。
  • 已编辑问题,请检查
  • 首先,CrossFilePicker 已经一年多没有更新了。您应该升级到 Essentials。见github.com/jfversluis/…

标签: xamarin xamarin.forms


【解决方案1】:

正如 Jason 所说,您可以使用 Xamarin.Essentials。下面的代码用于挑选 pdf 文件供您参考。

async Task<FileResult> PickAndShow(PickOptions options)
{
try
{
    var result = await FilePicker.PickAsync(options);
    if (result != null)
    {
        Text = $"File Name: {result.FileName}";
        if (result.FileName.EndsWith("pdf", StringComparison.OrdinalIgnoreCase))
        {
           //do something you want
        }
    }
    
    return result;
}
catch (Exception ex)
{
    // The user canceled or something went wrong
}

return null;
}

【讨论】:

    猜你喜欢
    • 2018-06-22
    • 1970-01-01
    • 2020-12-13
    • 2012-02-07
    • 2021-10-30
    • 2016-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多