无法从 Xamarin.Essentials 选择器获取 apk 文件的位置路径

问题描述

我需要选择 apk 文件获取使用 Xamarin 表单开发的应用程序中的文件路径。我已经使用 Xamarin.Essentials 来获取选择器。我可以获取图像和 pdf 的路径,但不能获取 apk。当我尝试选择 apk 文件时,出现 File not Found 异常。

   private async void Button_Clicked(object sender,System.EventArgs e)
    {

        try
        {

            var customFileType = new FilePickerFileType(new Dictionary<DevicePlatform,IEnumerable<string>>
                        {
                            {
                             DevicePlatform.Android,new[] { "application/vnd.android.package-archive" }
                            }
                        });

            var file = await FilePicker.PickAsync(new PickOptions
            {

                PickerTitle = "Please select a file",FileTypes = customFileType,});

            if (file != null)
            {

                var ss = file.FullPath;

            }

        }
        catch (Exception ee)
        {

        }

        var apkKey = DependencyService.Get<IHashCode>().GetPackageSignature();
        lll.Text = apkKey;

    }

异常...

  at Java.Interop.jnienvironment+InstanceMethods.CallNonvirtualObjectMethod (Java.Interop.JniObjectReference instance,Java.Interop.JniObjectReference type,Java.Interop.JniMethodInfo method,Java.Interop.JniArgumentValue* args) [0x0008e] in <94b04e1756104d1fa1d144932ae2720c>:0 
  at Java.Interop.JniPeerMembers+JniInstanceMethods.InvokeNonvirtualObjectMethod (System.String encodedMember,Java.Interop.IJavaPeerable self,Java.Interop.JniArgumentValue* parameters) [0x0001f] in <94b04e1756104d1fa1d144932ae2720c>:0 
  at Android.Content.ContentResolver.OpenInputStream (Android.Net.Uri uri) [0x00027] in /Users/builder/azdo/_work/278/s/xamarin-android/src/Mono.Android/obj/Release/monoAndroid10/android-30/mcw/Android.Content.ContentResolver.cs:1283 
  at Xamarin.Essentials.FileSystem.OpenContentStream (Android.Net.Uri uri,System.String& extension) [0x00018] in D:\a\1\s\Xamarin.Essentials\FileSystem\FileSystem.android.cs:268 
  at Xamarin.Essentials.FileSystem.CacheContentFile (Android.Net.Uri uri) [0x00015] in D:\a\1\s\Xamarin.Essentials\FileSystem\FileSystem.android.cs:235 
  at Xamarin.Essentials.FileSystem.EnsurePhysicalPath (Android.Net.Uri uri,System.Boolean requireExtendedAccess) [0x00034] in D:\a\1\s\Xamarin.Essentials\FileSystem\FileSystem.android.cs:87 
  at Xamarin.Essentials.FilePicker+<>c__displayClass2_0.<PlatformPickAsync>g__OnResult|0 (Android.Content.Intent intent) [0x00008] in D:\a\1\s\Xamarin.Essentials\FilePicker\FilePicker.android.cs:42 
  at Xamarin.Essentials.IntermediateActivity.OnActivityResult (system.int32 requestCode,Android.App.Result resultCode,Android.Content.Intent data) [0x00035] in D:\a\1\s\Xamarin.Essentials\Platform\Platform.android.cs:398 
--- End of stack trace from prevIoUs location where exception was thrown ---

  at Xamarin.Essentials.FilePicker.PlatformPickAsync (Xamarin.Essentials.PickOptions options,System.Boolean allowMultiple) [0x0013e] in D:\a\1\s\Xamarin.Essentials\FilePicker\FilePicker.android.cs:56 
  at Xamarin.Essentials.FilePicker.PickAsync (Xamarin.Essentials.PickOptions options) [0x0001c] in D:\a\1\s\Xamarin.Essentials\FilePicker\FilePicker.shared.cs:12 
  at GetSignature.MainPage.Button_Clicked (System.Object sender,System.EventArgs e) [0x00070] in C:\Users\Dushan Madushanka\source\repos\GetSignature\GetSignature\GetSignature\MainPage.xaml.cs:30 
  --- End of managed Java.IO.FileNotFoundException stack trace ---
java.io.FileNotFoundException: No such file or directory
    at android.database.DatabaseUtils.readExceptionWithFileNotFoundExceptionFromParcel(DatabaseUtils.java)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)