タイトルの通りですが、PACKAGE関連のIntent。
ようは
android.intent.action.PACKAGE_REMOVED
android.intent.action.PACKAGE_ADDED
android.intent.action.PACKAGE_REPLACED
android.intent.action.PACKAGE_REMOVED
だったりをBroadcastReceiverで検知したいときにはまりました。
まぁ単純にSchemeに"package"をかまさないと動かない。。
マニフィストになら
<data android:scheme="package"/>
明示的に作るなら
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addDataScheme("package");
といった事が必要でした。。
動かなくて悩んだ悩んだ。。。
以下はアクテイビティで直接セットしてる例です。
///////////////////////////////////////////////////////////
private final PackageReceiver PackageReceiver = new PackageReceiver();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
setReceiver();
}
@Override
protected void onDestroy() {
super.onDestroy();
delReceiver();
}
//Receiver登録
public void setReceiver(){
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addDataScheme("package");
getApplicationContext().registerReceiver(PackageReceiver, filter);
}
//Receiver削除
public void delReceiver(){
getApplicationContext().unregisterReceiver(PackageReceiver);
}
public class PackageReceiver extends BroadcastReceiver {
public void onReceive(Context context, Intent intent) {
if (intent != null) {
//Intentのアクションで処理を切り分け
if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
//処理を...
}
}
}
}