ここに、理論よりも方法のメカニズムの詳細があります。実際には、これは簡単に実装できます。
マニフェスト:
<receiver android:name=".BcastReciever">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" android:path="com.your.package" />
</intent-filter>
</receiver>
次に、ブロードキャストレシーバーで:
public class BcastReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getDataString().contains("com.your.package")){
Intent startActivityIntent = new Intent(context, Your.class);
startActivityIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivityIntent.setAction("onboot");
context.startActivity(startActivityIntent);
}
}
}
必要に応じて、アクティビティを起動する代わりに、サービスを再起動することもできます。