代码之家  ›  专栏  ›  技术社区  ›  navylover

更新完成后如何自动重启应用程序?

  •  0
  • navylover  · 技术社区  · 6 年前

    在谷歌之后,我决定这样做:

    <receiver android:name=".UpdateReceiver">
        <intent-filter>
           <action android:name="android.intent.action.ACTION_MY_PACKAGE_REPLACED" />
        </intent-filter>
    </receiver>
    

    以及:

    public class UpdateReceiver extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (intent.getAction().equals("android.intent.action.ACTION_MY_PACKAGE_REPLACED")){
                Intent intent = new Intent(context, StartActivity.class);
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent);
            }
        }
    }
    

    由于设备是根设备,因此请使用以下代码进行更新:

    command = "pm install -r " + "/mnt/sdcard/Download/xxx.apk";                                               
    Process proc = Runtime.getRuntime().exec(new String[]{"su", "-c", command});
    proc.waitFor();
    

    更新成功,但UpdateReceiver未触发,为什么?

    我的设备OS verison是4.4.4。我从自己的服务器上更新应用程序。

    1 回复  |  直到 6 年前
        1
  •  1
  •   nupadhyaya    6 年前

    不是的 android.intent.action.ACTION_MY_PACKAGE_REPLACED . 它是 android.intent.action.MY_PACKAGE_REPLACED

    <receiver android:name=".UpdateReceiver">
        <intent-filter>
           <action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
        </intent-filter>
    </receiver>