更换自身后自动重启Android应用程序

时间:2018-08-14 21:47:32

标签: android apk android-package-managers android-install-apk

我有一个Android应用程序,该应用程序安装更新并通过PackageManager进行自我替换,但是之后我还没有找到一种自动打开自身的方法,因为主要是它没有运行来接收任何广播/服务等。有签名级别的权限,但我认为这没有帮助。我正在运行Android 6.0.1。

我曾尝试做pm install -r packagename.apk ; am start -n packagename/MainActivity来链接命令,但主要是因为该应用在启动前就被杀死了,这对重启没有帮助。

我不是在寻找PackageManager“打开”和“取消”,而是自动重启。

我还可以重新启动设备并在以后运行它吗?

替换后如何自动重启Android应用程序?

更新

由于找不到更好的选择,我最终只使用了包管理器的“完成”和“打开”对话框。

1 个答案:

答案 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)
   }
}  

希望这会有所帮助。