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()方式,具體代碼如下:

public class 

MyInstalledReceiver extends BroadcastReceiver {     
    @Override 
    public void onReceive(Context context, Intent intent) {     
         
        if (intent.getAction().equals

("android.intent.action.PACKAGE_ADDED")) {     // install     
            String packageName = intent.getDataString();     
         
            Log.i("homer", "安裝了 :" + packageName);     
        }     
         
        if (intent.getAction().equals

("android.intent.action.PACKAGE_REMOVED")) {   // uninstall     
            String packageName = intent.getDataString();     
         
            Log.i("homer", "卸載了 :" + packageName);     
        }     
    }     
}

2, 注冊監聽

1) xml 方式

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

<?xml version="1.0" encoding="utf-8"?

>     
<manifest 

xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.homer.installed" 
    android:versionCode="1" 
    android:versionName="1.0" >     
         
    <application 
        android:icon="@drawable/ic_launcher" 
        android:label="@string/app_name" >     
        <activity 
            android:name=".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=".MyInstalledReceiver" >     
            <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>     
    <uses-sdk android:minSdkVersion="3" />     
</manifest>

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

2) 代碼方式

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

@Override 
public void onStart(){     
    super.onStart();     

    installedReceiver = new MyInstalledReceiver();     
    IntentFilter filter = new IntentFilter();     

    filter.addAction("android.intent.action.PACKAGE_ADDED");     
    filter.addAction("android.intent.action.PACKAGE_REMOVED");     
    filter.addDataScheme("package");     

    this.registerReceiver(installedReceiver, filter);     
}     

@Override 
public void onDestroy(){     
    if(installedReceiver != null) {     
        this.unregisterReceiver(installedReceiver);     
    }     

    super.onDestroy();
}

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

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

3, 結果測試

源碼下載:http://download.csdn.net/detail/sunboy_2050/4827015

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