在上一篇博客Android-开关机的广播,中介绍了,如何订阅接收者,去接收系统发送的开机/关机广播, 而这篇博客是订阅接收者 去接收应用的(安装/替换/卸载) 三种广播

订阅 接收者 去接收 应用的 (安装/替换/卸载) 三种广播,只能监听到其他应用,不能监听自己

使用场景:

例如:手机有卫士应用,当你安装一个应用,手机卫士就提醒:需要扫描病毒吗, 当你卸载一个应用,手机卫士就提醒:需要清理垃圾缓存吗,手机卫士是怎么知道的呢

   因为手机卫士也是,订阅了一个接收者,当应用被(安装/替换/卸载)系统会自动发出广播,接收者只需监听系统发过来的广播即可

在Android系统里面一个应用就是一个包package

在AndroidManifest.xml订阅接收者

     <!--
订阅(Xml形式订阅接收者)
订阅接收者:专门去接收Android系统发出的(安装/替换/卸载)广播
应用:和package 有关,所以需要PACKAGE_XXX
-->
<receiver android:name=".br.InstallUninstallBroadcastReceiver"> <intent-filter> <!-- 应用安装了 -->
<action android:name="android.intent.action.PACKAGE_ADDED" /> <!-- 应用卸载了 -->
<action android:name="android.intent.action.PACKAGE_REMOVED" /> <!-- 应用被覆盖了 -->
<action android:name="android.intent.action.PACKAGE_REPLACED" /> <!-- 系统就是这样发送的,所以必须这样订阅 -->
<data android:scheme="package" /> </intent-filter> </receiver>

接收者:

package liudeli.croadcast1.br;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log; /**
* (安装/替换/卸载)接收者,可以接收三个广播
* 当其他应用被(安装/替换/卸载)后,Android操作系统会自动检测到,系统会自动的发出以下三种广播
* 1安装
* 2替换
* 3卸载
*/
public class InstallUninstallBroadcastReceiver extends BroadcastReceiver { private final String TAG = InstallUninstallBroadcastReceiver.class.getSimpleName(); @Override
public void onReceive(Context context, Intent intent) { /**
* 获取(安装/替换/卸载)应用的 信息
*/
String packages = intent.getDataString();
packages = packages.split(":")[1]; String action = intent.getAction();
if (Intent.ACTION_PACKAGE_ADDED.equals(action)) {
Log.d(TAG, packages + "应用程序安装了,需要进行该应用安全扫描吗");
} else if (Intent.ACTION_PACKAGE_REMOVED.equals(action)) {
Log.d(TAG, packages + "应用程序卸载了,需要清理垃圾有缓存吗");
} else if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
Log.d(TAG, packages + "应用程序覆盖了");
}
}
}

测试后的Log日志:

12-18 02:06:53.749 3996-3996/liudeli.croadcast1 D/InstallUninstallBroadcastReceiver: test.liudeli.mytestproject1应用程序卸载了,需要清理垃圾有缓存吗
12-18 02:07:05.070 3996-3996/liudeli.croadcast1 D/InstallUninstallBroadcastReceiver: test.liudeli.mytestproject1应用程序安装了,需要进行该应用安全扫描吗
12-18 02:07:49.788 3996-3996/liudeli.croadcast1 D/InstallUninstallBroadcastReceiver: test.liudeli.mytestproject1应用程序覆盖了

Android-应用安装/替换/卸载/广播监听的更多相关文章

  1. 【Android】Android 监听apk安装替换卸载广播

    [Android]Android 监听apk安装替换卸载广播 首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDE ...

  2. Android 监听apk安装替换卸载广播

    首先是要获取应用的安装状态,通过广播的形式 以下是和应用程序相关的Broadcast Action ACTION_PACKAGE_ADDED 一个新应用包已经安装在设备上,数据包括包名(最新安装的包程 ...

  3. Android系统中应用的安装和卸载的监听

    一.创建一个类继承BroadcastReceiver并且复写onReceive的方法 public class AppStateReceiver extends BroadcastReceiver { ...

  4. Sdcard插拔、状态广播监听,Android文件系统,Android存储器相关知识总结

    一 SDcard广播监听,注册,取消注册的实现 (1)根据实际需要监听的事件,添加action,并注册,一般在onCreate中添加 //在IntentFilter中选择你要监听的行为 IntentF ...

  5. Android中Button的五种监听事件

    简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...

  6. oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序

    15511477451 原文 oracle 11g在安装过程中出现监听程序未启动或数据库服务未注册到该监听程序? 环境:win7 64位系统.oracle11g数据库 问题描述:在win7 64位系统 ...

  7. DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录自定义EditText控件实现监听软键盘隐藏事件的功能.基本上和参考资料相同. 效果图    代码分析 自定义EditText子 ...

  8. Android预安装可卸载程序

    /***************************************************************************** * Android预安装可卸载程序 * 说 ...

  9. AIX下RAC搭建 Oracle10G(五)安装oracle、建立监听

    AIX下RAC搭建系列 AIX下RAC搭建 Oracle10G(五)安装oracle.建立监听 环境 节点 节点1 节点2 小机型号 IBM P-series 630 IBM P-series 630 ...

随机推荐

  1. 列名 'Discriminator' 无效 解决方案

     {"列名 'Discriminator' 无效.\r\n列名 'Discriminator' 无效.\r\n列名 'Discriminator' 无效.\r\n列名 'FileUrl' 无 ...

  2. GREENPLUM简介

    什么是GREENPLUM? 对于很多IT人来说GREENPLUM是个陌生的名字.简单的说它就是一个与ORACLE, DB2一样面向对象的关系型数据库.我们通过标准的SQL可以对GP中的数据进行访问存取 ...

  3. bzoj1215 24点游戏

    Description 为了培养小孩的计算能力,大人们经常给小孩玩这样的游戏:从1付扑克牌中任意抽出4张扑克,要小孩用“+”.“-”.“×”.“÷”和括号组成一个合法的表达式,并使表达式的值为24点. ...

  4. Run-time Settings 运行时设置

    1.执行顺序设置和执行概率设置 2.迭代之间的等待时间设置 3.日志设置 4.思考时间 5.杂项 线程进程选择: 一般服务器没有安全机制选择线程执行 但是有安全机制的话 比如第一个进程50个线程 第二 ...

  5. Java-Runoob-高级教程-实例-字符串:01. Java 实例 – 字符串比较

    ylbtech-Java-Runoob-高级教程-实例-字符串:01. Java 实例 – 字符串比较 1.返回顶部 1. Java 实例 - 字符串比较  Java 实例 以下实例中我们通过字符串函 ...

  6. 第1课 GUI程序原理分析

    1. 命令行应用程序 (1)命令行应用程序的特点 ①是一种基于顺序执行结构的可执行程序 ②程序执行过程中不需要与用户产生交互 ③程序执行后给出最终的运行结果 (2)命令行应用程序的运行模式——程序运行 ...

  7. python的requests模块

    使用python进行接口测试得时候可以使用requests模块,是基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库 安装requests是模块 pip instal ...

  8. js 各种距离

    网页可见区域宽  document.body.clientWidth  网页可见区域高  document.body.clientHeight  网页可见区域宽(包括边线的宽)  document.b ...

  9. OpenMP 奇偶换排序

    ▶ 使用 OpenMP 进行奇偶交换排序 ● 代码 #include <stdio.h> #include <stdlib.h> #include <omp.h> ...

  10. 一次点击两次触发addEventListener

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...