の順番でBroadcastが投げられる。
個人的には違和感ありまくりなんだけど、内部的には一旦削除してから追加していて
このような挙動になっているんだと思う。(確かめてはないけど...)
しかし、パッケージ更新時のみPACKAGE_REMOVEDやPACKAGE_ADDEDの処理を
スキップしたいことはあると思う。そんな時は以下のようにインテントからデータを
抜き出して判定してやればいい。
- public class PackageMonitor extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- String action = intent.getAction();
- // パッケージ更新の場合はスキップ
- if (intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
- return;
- }
- if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
- // パッケージが追加された時にしたい処理
- } else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
- // パッケージが削除された時にしたい処理
- }
- }
- }
0 件のコメント:
コメントを投稿