MAUI:更新自己的应用程序(Android)



如果有新版本可用,我如何检查我自己的应用程序,然后自动更新?这个想法是为新版本请求API并接收apk文件。然后应该存储APK并开始安装/更新。我不知道该怎么做。对API的请求没什么大不了的,但是我如何在Android设备上存储和执行APK文件呢?

我只发现了这个,但是有太多的编译错误(上下文,Java, build, Intent, FileProvider找不到)。

你能给我一些提示如何解决这个"问题"吗?谢谢!

不需要卸载应用程序。如果它是用相同的密钥库和签名构建的,则可以直接安装一个版本来覆盖现有的。

var context = Android.App.Application.Context;                
var path = Path.Combine(Android.App.Application.Context.GetExternalFilesDir("").AbsolutePath, "com.companyname.Testproject.apk");
Java.IO.File file = new Java.IO.File(path);
using (Android.Content.Intent install = new Android.Content.Intent(Android.Content.Intent.ActionView))
{
Android.Net.Uri apkURI = AndroidX.Core.Content.FileProvider.GetUriForFile(context, context.ApplicationContext.PackageName + ".provider", file);
install.SetDataAndType(apkURI, "application/vnd.android.package-archive");
install.AddFlags(Android.Content.ActivityFlags.NewTask);
install.AddFlags(Android.Content.ActivityFlags.GrantReadUriPermission);
install.AddFlags(Android.Content.ActivityFlags.ClearTop);
install.PutExtra(Android.Content.Intent.ExtraNotUnknownSource, true);
Platform.CurrentActivity.StartActivity(install);
}

在androidmanifest .xml中我添加了:

<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<uses-permission android:name="android.permission.DELETE_PACKAGES" />

你可以通过下面的代码卸载你的应用程序:

var name = this.ApplicationContext.PackageName;
Intent intent = new Intent(Intent.ActionDelete);
intent.SetData(Android.Net.Uri.Parse("package:" + name));
StartActivity(intent);

另外,不要忘记在AndroidManifest.xml中添加权限:

<uses-permission android:name="android.permission.DELETE_PACKAGES" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />

相关内容

最新更新