android監(jiān)聽安裝和卸載示例
BroadcastReceiver 是系統(tǒng)全局廣播監(jiān)聽類, 其主要方法是onReceive(),自定義的廣播類繼承于它并實現(xiàn)自己的onReceive()處理邏輯
BroadcastReceiver 使用前,需要進行注冊監(jiān)聽(xml和代碼兩種方式),不使用時需要注銷監(jiān)聽,其生命周期一般為整個應(yīng)用的生命周期
1, 自定義廣播
自定義廣播MyInstalledReceiver繼承自BroadcastReceiver,實現(xiàn)其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, 注冊監(jiān)聽
1) xml 方式
在AndroidManifest.xml 配置文件的Application節(jié)點下,添加自定義的注冊監(jiān)聽 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 添加的注冊監(jiān)聽,其生命周期默認是整個應(yīng)用的生命周期
2) 代碼方式
一般在Activity的onStart()方法中注冊監(jiān)聽,在onDestroy()方法中注銷監(jiān)聽(也可以在onStop()方法中注銷,其生命周期注銷時結(jié)束)
@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和代碼兩種注冊方式,使用時選擇其一即可;
如果同時使用兩種方式,則兩種方式都有效,即一次安裝或卸載均統(tǒng)計了兩次(重復(fù)統(tǒng)計)
3, 結(jié)果測試

相關(guān)文章
Android實現(xiàn)微信自動向附近的人打招呼(AccessibilityService)
這篇文章主要為大家詳細介紹了實現(xiàn)微信自動向附近的人打招呼,實現(xiàn)收到指定賬戶推送文章時自動進入微信打開鏈接,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-12-12
listView的item中有checkbox,導致setOnItemClick失效的原因及解決辦法
這篇文章主要介紹了listView的item中有checkbox,導致setOnItemClick失效的原因及解決辦法,需要的朋友可以參考下2017-01-01
Android 自定義Button控件實現(xiàn)按鈕點擊變色
這篇文章給大家介紹了android 自定義Button控件實現(xiàn)按鈕點擊變色的代碼,本文給大家附有注釋,非常不錯,代碼簡單易懂,對android按鈕點擊變色的實現(xiàn)感興趣的朋友參考下吧2016-11-11
Android ExpandableListView展開列表控件使用實例
這篇文章主要介紹了Android ExpandableListView展開列表控件使用實例,本文實現(xiàn)了一個類似手機QQ好友列表的界面效果,需要的朋友可以參考下2014-07-07
Android開發(fā)使用URLConnection進行網(wǎng)絡(luò)編程詳解
這篇文章主要介紹了Android開發(fā)使用URLConnection進行網(wǎng)絡(luò)編程,結(jié)合實例形式分析了Android URLConnection對象創(chuàng)建、屬性、方法及相關(guān)使用技巧,需要的朋友可以參考下2018-01-01
Android中使用Gradle來構(gòu)建App項目的入門指南
Gradle是Java世界中一個高人氣自動化構(gòu)建工具,在安卓開發(fā)領(lǐng)域同樣備受追捧,這里為大家?guī)鞟ndroid中使用Gradle來構(gòu)建App項目的入門指南,來看看Gradle的作用與基本結(jié)構(gòu).2016-06-06
Android自定義實現(xiàn)BaseAdapter的優(yōu)化布局
這篇文章主要為大家詳細介紹了Android自定義實現(xiàn)BaseAdapter的優(yōu)化布局,感興趣的小伙伴們可以參考一下2016-08-08

