亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android 監聽安裝和卸載

系統 2394 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條評論
主站蜘蛛池模板: 精品国产一区二区二三区在线观看 | 极品美女aⅴ高清在线观看 极品美女一级毛片 | 亚洲天堂三区 | 国产亚洲欧洲国产综合一区 | 美女胸又大又黄www网站 | 夜福利视频 | 欧美精品成人一区二区视频一 | 亚洲图片综合区另类图片 | 手机在线看片不卡中文字幕 | 99精品欧美 | 亚洲黄色a| 劲爆激情欧美毛片 | 亚洲精品久久99久久一区 | 久久国产乱子伦免费精品 | 91中文字幕在线一区 | 国产伦精品一区三区视频 | 尹人香蕉网在线观看视频 | 亚洲免费区 | 色综合综合色综合色综合 | 国产欧美日韩网站 | 一级床上爽高清播放 | 亚洲精品一区二区三区在线看 | 国产亚洲欧美日韩v在线 | 91精品日本久久久久久牛牛 | 又粗又大的机巴好爽7 | 欧美一级爱爱视频 | 久久亚洲伊人中字综合精品 | 俄罗斯一级成人毛片 | 国产区一区二区三区 | 国产福利在线观看永久免费 | 日本无吗中文字幕免费婷婷 | 国产精品国语自产拍在线观看 | 中文字幕一区二区区免 | 免费观看黄色毛片 | 国产精品深夜福利免费观看 | 黑人巨大vs日本人优 | 日本高清在线一区二区三区 | 97久久人人爽人人爽人人 | 国产精品国产精品 | 女人18毛片一级毛片在线 | 亚洲精品欧洲精品 |