是否可以在 Android 中从自身更新应用程序?有问题的应用程序是系统应用程序,因此我可以执行特权命令。另请注意,我不想向用户显示任何通知,因此一切都应该在后台运行。
3 回答
一个应用程序更新自己实际上很容易,困难的部分是在没有向用户提示的情况下进行更新。该应用程序需要下载 APK,然后将其发送到PackageManager API 进行安装。然后Android会提出安装提示。有一个库来处理该部分:
至于提示,应用程序需要特权访问。如果设备已获得 root 权限,则应用程序可以请求 root 访问权限。该应用程序也可以作为“priv-app”刷新,以便它具有特权访问权限。或者你可以像 F-Droid 那样做:将特权扩展刷成“priv-app”,然后让你的应用向特权扩展发送安装/卸载请求。
否则,您需要下载二进制代码,并动态加载它,就像@yusuf-x 说的那样。请注意,Google 正在努力在每个新版本的 Android 中实现这一点。
使用 Java ClassLoader 动态加载被推送或下拉的代码。– Yusuf X 刚刚编辑。我在 Android 上将其用于此目的。
Fdroid 是一个开源应用程序存储库。他们的客户端应用程序可以从 fdroid 存储库安装/更新/删除应用程序,包括它自己。
在此处查看客户端应用程序的安装程序部分的代码: https ://gitlab.com/fdroid/fdroidclient/tree/master/app/src/main/java/org/fdroid/fdroid/installer