MainActivity如下:
package cn.testappaddandremove; import android.os.Bundle; import android.app.Activity; import android.content.IntentFilter; /** * Demo描述: * 利用广播监听设备安装和卸载应用程序 * * 参考资料: * http://blog.csdn.net/wangjinyu501/article/details/9664315 * Thank you very much */ public class MainActivity extends Activity { private AppBroadcastReceiver mAppBroadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } @Override protected void onStart() { super.onStart(); // //方式一:在代码中设置IntentFilter // mAppBroadcastReceiver=new AppBroadcastReceiver(); // IntentFilter intentFilter=new IntentFilter(); // intentFilter.addAction("android.intent.action.PACKAGE_ADDED"); // intentFilter.addAction("android.intent.action.PACKAGE_REMOVED"); // intentFilter.addDataScheme("package"); // this.registerReceiver(mAppBroadcastReceiver, intentFilter); //方式二:在Manifest.xml中设置IntentFilter // 测试发现方式二效果更好些 mAppBroadcastReceiver=new AppBroadcastReceiver(); IntentFilter intentFilter=new IntentFilter(); this.registerReceiver(mAppBroadcastReceiver,intentFilter); } @Override protected void onDestroy() { if (mAppBroadcastReceiver!=null) { this.unregisterReceiver(mAppBroadcastReceiver); } super.onDestroy(); } }
AppBroadcastReceiver如下:
package cn.testappaddandremove; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class AppBroadcastReceiver extends BroadcastReceiver { private final String ADD_APP ="android.intent.action.PACKAGE_ADDED"; private final String REMOVE_APP ="android.intent.action.PACKAGE_REMOVED"; @Override public void onReceive(Context context, Intent intent) { String action=intent.getAction(); if (ADD_APP.equals(action)) { String packageName=intent.getDataString(); System.out.println("安装了:"+packageName); } if (REMOVE_APP.equals(action)) { String packageName=intent.getDataString(); System.out.println("卸载了:"+packageName); } } }
Manifest.xml如下:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.testappaddandremove" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="8" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="cn.testappaddandremove.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name="cn.testappaddandremove.AppBroadcastReceiver"> <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> </application> </manifest>
main.xml如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="监听应用程序的安装和卸载" android:layout_centerInParent="true" /> </RelativeLayout>