新しいバージョンの Android アプリをインストールした後、アプリを再起動します。

1. コードを直接アップロードします。アプリが新しいバージョンをインストールすると、システムは 3 つのブロードキャストを送信します。Androidプログラムにブロードキャストを登録し、更新アプリ完了後にブロードキャスト(android.intent.action.PACKAGE_REPLACED)を受信するように指定するだけで、ブロードキャスト受信後、アプリを再起動できます。

/*android.intent.action.PACKAGE_REMOVED 卸载应用完成后收到
    android.intent.action.PACKAGE_ADDED 安装应用完成后收到
    android.intent.action.PACKAGE_REPLACED 更新应用完成后收到,
    在此之前后先收到前两个广播(PACKAGE_REMOVED 然后是 PACKAGE_ADDED 最后是 PACKAGE_REPLACED )*/
    class UninstallReceiver extends BroadcastReceiver {
    
    
        @Override
        public void onReceive(Context context, Intent intent) {
    
    
            if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
    
    
              //这里做重新启动app
              ActivityManager manager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
            manager.restartPackage("com.example.test");
        }
    }

2. 静的登録ブロードキャスト、コード登録ブロードキャストも選択できます

//在AndroidManifest.xml中定义如下
        <receiver android:name=".UninstallReceiver">
            <intent-filter>
                <action android:name="android.intent.action.SCREEN_ON" />
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.intent.action.ACTION_PACKAGE_ADDED" />
                <action android:name="android.intent.action.ACTION_PACKAGE_REPLACED" />
                <action android:name="android.intent.action.ACTION_PACKAGE_REMOVED" />
            </intent-filter>
        </receiver>

3. コード登録ブロードキャスト

//注册广播
IntentFilter intentFilter = new IntentFilter();
        UninstallReceiver uninstallReceiver = new UninstallReceiver();
        intentFilter.addAction(Intent.SCREEN_ON);
        intentFilter.addAction(Intent.BOOT_COMPLETED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
        intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
        intentFilter.addDataScheme("package");
        registerReceiver(uninstallReceiver, intentFilter);

4. こちらの記事も参考にしてください

https://blog.csdn.net/u012346890/article/details/111516870

おすすめ

転載: blog.csdn.net/qq_36570506/article/details/131695013