アプリがアップデートされたタイミングで処理を行う。
※新規インストール時も動く。
・AndroidManifest.xml
1 2 3 4 5 6 7 |
<receiver android:name=".MyAlarmBootCompletedReceiver" > <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" /> </intent-filter> </receiver> |
※注意
その他のBOOT_COMPLETED等も同時に設定する場合は以下のようにintent-filterを分けないとPACKAGE_REPLACEDしか受信されない。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<receiver android:name=".MyAlarmBootCompletedReceiver" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.DATE_CHANGED" /> <action android:name="android.intent.action.TIMEZONE_CHANGED" /> <action android:name="android.intent.action.TIME_SET" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.PACKAGE_REPLACED" /> <data android:scheme="package" /> </intent-filter> </receiver> |
・レシーバ
すべてのアプリのアップデートを受信するため、自アプリの判定が必要。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class MyAlarmBootCompletedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); String packagePath = intent.getDataString(); // TODO 自動生成されたメソッド・スタブ if(action.equals(Intent.ACTION_PACKAGE_REPLACED) && packagePath.equals("package:" + context.getPackageName())){ //自アプリのアップデート時の処理 } } } |