Android监听程序的安装和卸载
2016-07-21 09:27
441 查看
在android系统中,安装和卸载都会发送广播,当应用安装完成后系统会发android.intent.action.PACKAGE_ADDED广播。可以通过intent.getDataString()获得所安装的包名。当卸载程序时系统发android.intent.action.PACKAGE_REMOVED广播。同样intent.getDataString()获得所卸载的包名
应用程序无法监听自己的安装与卸载,但覆盖安装可以监听到自己的android.intent.action.PACKAGE_REMOVED广播。
public class GetBroadcast extends BroadcastReceiver {
02
03
private static GetBroadcast mReceiver = new GetBroadcast();
04
private static IntentFilter mIntentFilter;
05
06
07
public static void registerReceiver(Context context) {
08
mIntentFilter = new IntentFilter();
09
mIntentFilter.addDataScheme(“package”);
10
mIntentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
11
mIntentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
12
mIntentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
13
context.registerReceiver(mReceiver, mIntentFilter);
14
}
15
16
public static void unregisterReceiver(Context context) {
17
context.unregisterReceiver(mReceiver);
18
}
19
20
@Override
21
public void onReceive(Context context, Intent intent) {
22
String action = intent.getAction();
23
if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
24
Toast.makeText(context, “有应用被添加”, Toast.LENGTH_LONG).show();
25
} else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
26
Toast.makeText(context, “有应用被删除”, Toast.LENGTH_LONG).show();
27
}
28
29
/*
30
* else if(Intent.ACTION_PACKAGE_CHANGED.equals(action)){
31
* Toast.makeText(context, “有应用被改变”, Toast.LENGTH_LONG).show(); }
32
*/
33
34
else if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
35
Toast.makeText(context, “有应用被替换”, Toast.LENGTH_LONG).show();
36
}
37
38
/*
39
* else if(Intent.ACTION_PACKAGE_RESTARTED.equals(action)){
40
* Toast.makeText(context, “有应用被重启”, Toast.LENGTH_LONG).show(); }
41
*/
42
43
/*
44
* else if(Intent.ACTION_PACKAGE_INSTALL.equals(action)){
45
* Toast.makeText(context, “有应用被安装”, Toast.LENGTH_LONG).show(); }
46
*/
47
}
48
}
应用程序无法监听自己的安装与卸载,但覆盖安装可以监听到自己的android.intent.action.PACKAGE_REMOVED广播。
这里是手动注册广播
public class GetBroadcast extends BroadcastReceiver {
02
03
private static GetBroadcast mReceiver = new GetBroadcast();
04
private static IntentFilter mIntentFilter;
05
06
07
public static void registerReceiver(Context context) {
08
mIntentFilter = new IntentFilter();
09
mIntentFilter.addDataScheme(“package”);
10
mIntentFilter.addAction(Intent.ACTION_PACKAGE_ADDED);
11
mIntentFilter.addAction(Intent.ACTION_PACKAGE_REMOVED);
12
mIntentFilter.addAction(Intent.ACTION_PACKAGE_REPLACED);
13
context.registerReceiver(mReceiver, mIntentFilter);
14
}
15
16
public static void unregisterReceiver(Context context) {
17
context.unregisterReceiver(mReceiver);
18
}
19
20
@Override
21
public void onReceive(Context context, Intent intent) {
22
String action = intent.getAction();
23
if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
24
Toast.makeText(context, “有应用被添加”, Toast.LENGTH_LONG).show();
25
} else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
26
Toast.makeText(context, “有应用被删除”, Toast.LENGTH_LONG).show();
27
}
28
29
/*
30
* else if(Intent.ACTION_PACKAGE_CHANGED.equals(action)){
31
* Toast.makeText(context, “有应用被改变”, Toast.LENGTH_LONG).show(); }
32
*/
33
34
else if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
35
Toast.makeText(context, “有应用被替换”, Toast.LENGTH_LONG).show();
36
}
37
38
/*
39
* else if(Intent.ACTION_PACKAGE_RESTARTED.equals(action)){
40
* Toast.makeText(context, “有应用被重启”, Toast.LENGTH_LONG).show(); }
41
*/
42
43
/*
44
* else if(Intent.ACTION_PACKAGE_INSTALL.equals(action)){
45
* Toast.makeText(context, “有应用被安装”, Toast.LENGTH_LONG).show(); }
46
*/
47
}
48
}
相关文章推荐
- Android 5.0 API
- Android 单位px、dp、sp转换工具类
- Android Lollipop
- Android 自定义View实现ViewPager指示器
- Android 监听Notification 被清除实例代码
- Android锁屏状态下弹出activity,如新版qq的锁屏消息提示
- 详解Android中AsyncTask的使用
- 直接拿来用,最火的Android开源项目
- android中自定义attr,以及style杂谈
- Android绘图基础之 ~~~ 在XML中绘图
- android文件API使用
- [Android] 内存泄漏调试经验分享 (一)
- android_launcher的源码详细分析
- Android Sensor Framework(狠详)
- Android 如何让EditText不自动获取焦点
- Android
- Android获取系统信息工具类
- Android6.0来电号码与电话薄联系人进行匹配
- Android中获取当前的Activity
- Android安卓Adapter理解