Android 监听程序的安装和卸载
一、安装和卸载的广播:
安装程序广播:程序安装完成后会向系统发送一个android.intent.action.PACKAGE_ADDED广播,可通过intent.getDataString()获取所安装的包名
卸载程序广播:程序卸载完成后会向系统发送一个android.intent.action.PACKAGE_REMOVED广播,可通过intent.getDataString()获得所卸载的包名
二、存储安装、卸载信息
一般将安装或卸载的信息存储到sqlite或sharepreference中,便于后续利用。
三、注册方式:
方式1:清单文件中
思路:在AndroidManifest.xml 添加的注册监听,其生命周期默认是整个应用的生命周期。
代码:
1 <receiver android:name=".MonitorReceiver" > 2 <intent-filter> 3 <action android:name="android.intent.action.PACKAGE_ADDED" /> 4 <action android:name="android.intent.action.PACKAGE_REMOVED" /> 5 <data android:scheme="package" /> 6 </intent-filter> 7 </receiver>
方式2、代码方式中
思路:一般在Activity的onStart()方法中注册监听,在onDestroy()或onStop()方法中注销监听。
代码:
1 MonitorReceiver receiver; 2 3 @Override 4 public void onStart(){ 5 super.onStart(); 6 7 receiver = new MonitorReceiver(); 8 IntentFilter filter = new IntentFilter(); 9 10 filter.addAction("android.intent.action.PACKAGE_ADDED"); 11 filter.addAction("android.intent.action.PACKAGE_REMOVED"); 12 filter.addDataScheme("package"); 13 14 this.registerReceiver(receiver, filter); 15 } 16 17 @Override 18 public void onDestroy(){ 19 if(receiver != null) { 20 this.unregisterReceiver(receiver); 21 } 22 super.onDestroy(); 23 }