の順番で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 件のコメント:
コメントを投稿