c# - 如何使 Xamarin Forms 应用程序自动更新?
问题描述
我正在开发一个 xamarin 表单应用程序,它需要在不使用应用程序市场解决方案(Play Store、App Center...)的情况下自动更新。
我已经进行了大量搜索,从概念上讲,它应该如下所示:
- 该应用程序应从 Web 服务下载 .apk 文件;
- 必须创建某种服务才能删除当前应用程序版本并安装下载的应用程序。
当我在浏览器中发出请求时,我的 WebAPI 运行良好。我只需要一些 C# 源代码即可在 android 设备中下载和安装 .apk 文件。
解决方案
正如您所说,首先您下载 de APK,然后,只需启动安装下载文件的意图。您可以调整存储位置和文件名
public void DownloadFile(string m_uri, string m_filePath)
{
var webClient = new WebClient();
webClient.DownloadFileCompleted += (s, e) =>
{
string error = e.Error.Message;
//var bytes = e.Result; // get the downloaded data
string documentsPath = Android.OS.Environment.ExternalStorageDirectory + "/download/";
Intent promptInstall = new Intent(Intent.ActionView).SetDataAndType(Android.Net.Uri.FromFile(new Java.IO.File(Android.OS.Environment.ExternalStorageDirectory + "/download/" + "FileName.apk")), "application/vnd.android.package-archive");
promptInstall.AddFlags(ActivityFlags.NewTask);
StartActivity(promptInstall);
};
var url = new System.Uri(m_uri);
webClient.DownloadProgressChanged += new DownloadProgressChangedEventHandler(DownloadProgressCallback);
webClient.DownloadFileAsync(url, Android.OS.Environment.ExternalStorageDirectory + "/download/FileName.apk");
}
}
推荐阅读
- mysql - MYSQL - 在 select 和 group by 中将多列显示为不同的值
- c# - 从 .net core 中的其他类库访问 automapper
- flutter - Flutter 文本在某些情况下无法正确呈现
- ionic-framework - ionic 3 项加载功能
- android - 无法在某些设备上播放默认通知铃声
- mongodb - 按 2 个字段更新数组过滤
- mysql - ON DUPLICATE KEY UPDATE 与 WHERE 条件和超过 50 个字段
- java - 从 azure 登录获取令牌
- c++ - 在类内部处理回调时必须调用对非静态成员函数的引用
- c++ - 如何在数组c ++中对字符串进行排序