首页 > 解决方案 > 无法从 Xamarin.Essentials 选择器获取 apk 文件的位置路径

问题描述

我需要选择 apk 文件并在我的应用程序中获取文件路径,该应用程序是使用 Xamarin 表单开发的。我使用 Xamarin.Essentials 来获取选择器。我可以获取图像和 pdf 的路径,但不能获取 apks。当我尝试选择 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)

标签: androidxamarin.forms

解决方案


推荐阅读