Android利用廣播監聽設備安裝和卸載應用程序
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(); } } </pre>AppBroadcastReceiver如下:<pre class="brush:java; toolbar: true; auto-links: false;"> 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); } } } </pre>Manifest.xml如下:<pre class="brush:xml; toolbar: true; auto-links: false;"> <?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> </pre>main.xml如下:<pre class="brush:xml; toolbar: true; auto-links: false;"> <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> </pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!