android - 无法从 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)
解决方案
推荐阅读
- java - 使用 TestNG 模拟单元测试服务类
- angular - 如何在 Angular 中渲染子组件的内容?
- python - awk在python中带有变量
- python - 添加调用窗口时弹出窗口写入/关闭代码停止工作,为什么?
- android - 不同屏幕布局中的不同视图
- javascript - 无法调整 react-chartjs-2 圆环图的大小
- go - 提交 Gopkg.lock 文件是否安全?
- windows - 如何检查 Hyper-V 机器是 Windows 还是 Linux?
- c# - 在带有 SQL Server 的 EF Core 中,执行 DbSet
变量将整个表存储在内存中,还是只是引用? - c++ - 错误:不允许转换为不完整的数组类型“int []”