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;@Overrideprotected 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); }@Overrideprotected 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";@Overridepublic 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>