监听APK安装广播

版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}

猜你喜欢

转载自blog.csdn.net/fwt336/article/details/88355903
今日推荐