在開發中,我們經常會需要監聽應用的安裝、卸載或替換,但是經常又會遺忘某些關鍵點。
1. 配置權限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
2. 註冊廣播
private void initReceiver() {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
intentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
intentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
intentFilter.addDataScheme("package");
registerReceiver(receiver, intentFilter);
}
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_PACKAGE_ADDED)) {
String packageName = intent.getData().getSchemeSpecificPart();
Log.e("tag", packageName + "安裝成功");
} else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REPLACED)) {
String packageName = intent.getData().getSchemeSpecificPart();
Log.e("tag", packageName + "替換成功");
} else if (intent.getAction().equals(Intent.ACTION_PACKAGE_REMOVED)) {
String packageName = intent.getData().getSchemeSpecificPart();
Log.e("tag", packageName + "卸載成功");
}
}
};
此處的重點是;
intentFilter.addDataScheme("package");
經常容易被忘記!
3. 註銷
@Override public void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); }