风林火山阴雷
其疾如风、其徐如林、侵略如火、不动如山、难知如阴、动如雷震。

前言

当我们安装或卸载应用的时候想知道是否安装、卸载成功,这时候我们可能会想做一个循环然后去判断应用是否安装过,但是这样很麻烦,还有Android系统给我们提供了一个广播,当我们安装应用成功的时候,系统会发送android.intent.action.PACKAGE_ADDED广播,当应用卸载成功的时候应用会发送android.intent.action.PACKAGE_REMOVED广播,所以我们只需要注册一个BroadcastRecevier就可以监听应用安装、卸载是否成功了。

使用步骤

我们需要定义一个BroadcastReceiver。

class AppReceiver extends BroadcastReceiver {

        @Override
        public void onReceive(Context context, Intent intent) {
            //接收安装广播
            if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
                String packageName = intent.getDataString().substring(8);
                
            }
            //接收卸载广播
            if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
                String packageName = intent.getDataString().substring(8);
                
            }
        }
    }

然后注册这个BroadcastReceiver,大家都知道广播有两种注册方式,一种是在AndroidManifest.xml中静态注册,一种是通过java代码去动态注册。

静态注册

<receiver android:name=".AppReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.PACKAGE_ADDED" />
                <action android:name="android.intent.action.PACKAGE_REMOVED" />
 
                <data android:scheme="package" />
            </intent-filter>
        </receiver>

注意scheme必须要有。

动态注册

AppReceiver appReceiver = new AppReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.PACKAGE_ADDED");
filter.addAction("android.intent.action.PACKAGE_REMOVED");
filter.addDataScheme("package");
registerReceiver(appReceiver, filter);

接下在就可以在BroadcastReceiver中判断广播监听了

  目录