Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android實現監聽安裝和卸載示例

Android實現監聽安裝和卸載示例

編輯:Android開發實例

 Android 應用程序的安裝和卸載事件,是由系統進行監聽並全局廣播的,支持1.5(android 3)以上

因此,如果想要監聽獲取應用的安裝和卸載事件,只需要自定義一個BroadcastReceiver,來對系統廣播進行監聽和處理

 

BroadcastReceiver 是系統全局廣播監聽類, 其主要方法是onReceive(),自定義的廣播類繼承於它並實現自己的onReceive()處理邏輯

BroadcastReceiver 使用前,需要進行注冊監聽(xml和代碼兩種方式),不使用時需要注銷監聽,其生命周期一般為整個應用的生命周期

 

1, 自定義廣播

自定義廣播MyInstalledReceiver繼承自BroadcastReceiver,實現其onReceive()方式,具體代碼如下:

 

  1. public class MyInstalledReceiver extends BroadcastReceiver { 
  2.     @Override 
  3.     public void onReceive(Context context, Intent intent) { 
  4.  
  5.         if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {     // install 
  6.             String packageName = intent.getDataString(); 
  7.  
  8.             Log.i("homer", "安裝了 :" + packageName); 
  9.         } 
  10.  
  11.         if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {   // uninstall 
  12.             String packageName = intent.getDataString(); 
  13.  
  14.             Log.i("homer", "卸載了 :" + packageName); 
  15.         } 
  16.     } 

2, 注冊監聽

1) xml 方式

在AndroidManifest.xml 配置文件的Application節點下,添加自定義的注冊監聽 MyInstalledReceiver

 

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" 
  3.     package="com.homer.installed" 
  4.     android:versionCode="1" 
  5.     android:versionName="1.0" > 
  6.  
  7.     <application 
  8.         android:icon="@drawable/ic_launcher" 
  9.         android:label="@string/app_name" > 
  10.         <activity 
  11.             android:name=".MainActivity" 
  12.             android:label="@string/app_name" > 
  13.             <intent-filter> 
  14.                 <action android:name="android.intent.action.MAIN" /> 
  15.  
  16.                 <category android:name="android.intent.category.LAUNCHER" /> 
  17.             </intent-filter> 
  18.         </activity> 
  19.  
  20.         <receiver android:name=".MyInstalledReceiver" > 
  21.             <intent-filter> 
  22.                 <action android:name="android.intent.action.PACKAGE_ADDED" /> 
  23.                 <action android:name="android.intent.action.PACKAGE_REMOVED" /> 
  24.  
  25.                 <data android:scheme="package" /> 
  26.             </intent-filter> 
  27.         </receiver> 
  28.     </application> 
  29.     <uses-sdk android:minSdkVersion="3" /> 
  30. </manifest> 

在AndroidManifest.xml 添加的注冊監聽,其生命周期默認是整個應用的生命周期

 

 

2) 代碼方式

一般在Activity的onStart()方法中注冊監聽,在onDestroy()方法中注銷監聽(也可以在onStop()方法中注銷,其生命周期注銷時結束)

 

  1. @Override 
  2. public void onStart(){ 
  3.     super.onStart(); 
  4.      
  5.     installedReceiver = new MyInstalledReceiver(); 
  6.     IntentFilter filter = new IntentFilter(); 
  7.      
  8.     filter.addAction("android.intent.action.PACKAGE_ADDED"); 
  9.     filter.addAction("android.intent.action.PACKAGE_REMOVED"); 
  10.     filter.addDataScheme("package"); 
  11.      
  12.     this.registerReceiver(installedReceiver, filter); 
  13.  
  14. @Override 
  15. public void onDestroy(){ 
  16.     if(installedReceiver != null) { 
  17.         this.unregisterReceiver(installedReceiver); 
  18.     } 
  19.      
  20.     super.onDestroy(); 

以上xml和代碼兩種注冊方式,使用時選擇其一即可; 

 

如果同時使用兩種方式,則兩種方式都有效,即一次安裝或卸載均統計了兩次(重復統計)

 

 

3, 結果測試

 

 

源碼下載

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved