版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fwt336/article/details/88355903
在开发中,我们经常会需要监听应用的安装、卸载或替换,但是经常又会遗忘某些关键点。
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); }