Xamarin Android可编程下载安装APK

编程入门 行业动态 更新时间:2024-10-25 02:22:27
本文介绍了Xamarin Android可编程下载安装APK的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

因此我有一个用于验证更新的按钮,当我单击它时,我希望它下载并安装APK,但我一直收到错误There was a problem parsing the package。

下载->;

var imagePath = Path.Combine(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).ToString(), "abcFichaObrasUpdate"); using (WebClient client = new WebClient()) { try { if (!Directory.Exists(imagePath.ToString())) { Directory.CreateDirectory(imagePath.ToString()); } Uri uri = new Uri(remoteUri); client.DownloadFileCompleted += (s, e) => Extract(s, e, progress); client.DownloadProgressChanged += (s, e) => ProgessChanged(s, e); client.DownloadFileAsync(uri, imagePath + "/" + "update.apk"); } catch (Exception) { throw; } }

因此,下载完成后,它将保存在类似/storage/emulated/0/Download/abcFichaObrasUpdate/update.apk

的路径中

安装->;

Java.IO.File updatePath = new Java.IO.File(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDownloads).ToString(), "abcFichaObrasUpdate"); Java.IO.File toInstall = new Java.IO.File(updatePath, "update.apk"); Android.Net.Uri apkUri = Android.Support.V4.Content.FileProvider.GetUriForFile(Application.Context, AppInfo.PackageName + ".provider", toInstall); Intent intent = new Intent(Intent.ActionView); intent.SetFlags(ActivityFlags.GrantReadUriPermission); intent.SetFlags(ActivityFlags.ClearTop); intent.SetFlags(ActivityFlags.NewTask); intent.PutExtra(Intent.ExtraNotUnknownSource, true); intent.SetData(apkUri); Application.Context.StartActivity(intent);

AndroidManifest.xml

<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.abcbraga.abcfichaobras.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider>

filepaths.xml

<?xml version="1.0" encoding="utf-8"?> <paths> <external-path name="external" path="." /> <external-files-path name="external_files" path="." /> <files-path name="files" path="." /> </paths> 但当它获得apkUri时,它会将其转换为{content://com.abcbraga.abcfichaobras.provider/external/Download/abcFichaObrasUpdate/update.apk} 当它尝试启动安装活动时,它只是抛出错误,我认为问题出在URI中。

推荐答案

为使其正常工作,我更改了提供程序 来自Android Support v4

<provider android:name="android.support.v4.content.FileProvider" android:authorities="com.abcbraga.abcfichaobras.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths" /> </provider>

至androidx核心内容

<provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths" /> </provider>

更多推荐

Xamarin Android可编程下载安装APK

本文发布于:2023-06-04 08:32:38,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/493309.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:可编程   Xamarin   Android   APK

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!