日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Android 監聽安裝和卸載

系統 2381 0

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, 結果測試

Android 監聽安裝和卸載



源碼下載



參考推薦:

Receiving package install and uninstall events

Android BroadcastReceiver (推薦)

Android Manifest.xml 結構詳解

Android Intent Action 大全

intent (google)


Android 監聽安裝和卸載


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 陈巴尔虎旗| 红河县| 孝感市| 新安县| 平南县| 大石桥市| 友谊县| 蕲春县| 黔南| 瑞丽市| 连平县| 台前县| 玉田县| 西安市| 新蔡县| 石林| 九江县| 龙胜| 句容市| 襄樊市| 蓬溪县| 中西区| 隆林| 武川县| 莒南县| 博爱县| 东台市| 峡江县| 沂源县| 瑞昌市| 交城县| 肇源县| 陕西省| 将乐县| 南京市| 白水县| 原阳县| 盘山县| 攀枝花市| 永春县| 潞西市|