MainActivity如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
packagecn.testappaddandremove;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.content.IntentFilter;
/**
* Demo描述:
* 利用广播监听设备安装和卸载应用程序
*
* 参考资料:
* http://blog.csdn.net/wangjinyu501/article/details/9664315
* Thank you very much
*/
publicclassMainActivity extendsActivity {
privateAppBroadcastReceiver mAppBroadcastReceiver;
@Override
protectedvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protectedvoidonStart() {
super.onStart();
// //方式一:在代码中设置IntentFilter
// mAppBroadcastReceiver=new AppBroadcastReceiver();
// IntentFilter intentFilter=new IntentFilter();
// intentFilter.addAction("android.intent.action.PACKAGE_ADDED");
// intentFilter.addAction("android.intent.action.PACKAGE_REMOVED");
// intentFilter.addDataScheme("package");
// this.registerReceiver(mAppBroadcastReceiver, intentFilter);
//方式二:在Manifest.xml中设置IntentFilter
// 测试发现方式二效果更好些
mAppBroadcastReceiver=newAppBroadcastReceiver();
IntentFilter intentFilter=newIntentFilter();
this.registerReceiver(mAppBroadcastReceiver,intentFilter);
}
@Override
protectedvoidonDestroy() {
if(mAppBroadcastReceiver!=null) {
this.unregisterReceiver(mAppBroadcastReceiver);
}
super.onDestroy();
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
packagecn.testappaddandremove;
importandroid.content.BroadcastReceiver;
importandroid.content.Context;
importandroid.content.Intent;
publicclassAppBroadcastReceiver extendsBroadcastReceiver {
privatefinalString ADD_APP ="android.intent.action.PACKAGE_ADDED";
privatefinalString REMOVE_APP ="android.intent.action.PACKAGE_REMOVED";
@Override
publicvoidonReceive(Context context, Intent intent) {
String action=intent.getAction();
if(ADD_APP.equals(action)) {
String packageName=intent.getDataString();
System.out.println("安装了:"+packageName);
}
if(REMOVE_APP.equals(action)) {
String packageName=intent.getDataString();
System.out.println("卸载了:"+packageName);
}
}
}
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
<?xmlversion="1.0"encoding="utf-8"?>
<manifestxmlns:android="http://schemas.android.com/apk/res/android"
package="cn.testappaddandremove"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="8"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="cn.testappaddandremove.MainActivity"
android:label="@string/app_name">
<intent-filter>
<actionandroid:name="android.intent.action.MAIN"/>
<categoryandroid:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<receiverandroid:name="cn.testappaddandremove.AppBroadcastReceiver">
<intent-filter>
<actionandroid:name="android.intent.action.PACKAGE_ADDED"/>
<actionandroid:name="android.intent.action.PACKAGE_REMOVED"/>
<data android:scheme="package"/>
</intent-filter>
</receiver>
</application>
</manifest>
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="监听应用程序的安装和卸载"
android:layout_centerInParent="true"
/>
</RelativeLayout>
|