我有一个Android应用程序,该应用程序安装更新并通过PackageManager
进行自我替换,但是之后我还没有找到一种自动打开自身的方法,因为主要是它没有运行来接收任何广播/服务等。有签名级别的权限,但我认为这没有帮助。我正在运行Android 6.0.1。
我曾尝试做pm install -r packagename.apk ; am start -n packagename/MainActivity
来链接命令,但主要是因为该应用在启动前就被杀死了,这对重启没有帮助。
我不是在寻找PackageManager“打开”和“取消”,而是自动重启。
我还可以重新启动设备并在以后运行它吗?
替换后如何自动重启Android应用程序?
更新
由于找不到更好的选择,我最终只使用了包管理器的“完成”和“打开”对话框。
答案 0 :(得分:0)
您可以使用意图过滤器android.intent.action.MY_PACKAGE_REPLACED
注册用于应用程序包更新的简单广播。
将此添加到您的清单:
<receiver
android:name=".AppUpdateReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
并创建广播接收器(例如AppUpdateReceiver.kt)以重新启动应用。
class AppUpdateReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
Log.i(tag, "App Updated, Relauncing...")
val intent = Intent(context?.applicationContext, MainActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
context?.startActivity(intent)
}
}
希望这会有所帮助。