相关文章推荐:

Android 安装包APK瘦身、多渠道打包总结

Android 检查应用包名是否存在并启动或安装指定包名

Android 监听Home键、Back键、多任务键最新解决方法

 

Android 广播Broadcast的两种注册方式静态和动态


导语

在项目中为了实现应用升级后清楚缓存和SharedPreferences。这样我是利用广播监听应用包的改变状态去实现的,当然实现的方法还有很多。下面,我直接讲重点,如果使用广播监听应用APK的卸载、覆盖、安装的状态。


首先,我们需要自定义注册一个动态广播。类名为PackageReceiver.class

                                                                                                                                                                    

并且在Manifest里写好需要进行广播拦截的过滤器。


其次,我们回到自定义的广播类PackageReceiver.class中进行判断:

/** * Created by aiyang on 2018/3/8. * * 监听应用安装 */public class PackageReceiver extends BroadcastReceiver {    @Override    public void onReceive(Context context, Intent intent) {        String packageName = intent.getDataString();        // 安装        if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {        }        // 覆盖安装        if (intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")) {        }        // 移除        if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {        }    }}

最后,剩下的就是在判断中去实现业务需求即可。还是很简单的。


总结:

 1、 一个新应用包已经安装在设备上,数据包括包名(监听所在的app,新安装时,不能接收到这个广播)

               


2、一个新版本的应用安装到设备,替换之前已经存在的版本  替换时会先收到卸载的再收到替换的, 替换自身也能收到

               


3、 一个已存在的应用程序包已经从设备上移除,包括包名(卸载监听所在的app,则无法接收到) 
               


更多相关文章

  1. android数据库持久化框架
  2. 多个Android客户端同步服务器端表中数据架构分析
  3. Android之如何获取Android设备的唯一识别码笔记
  4. Android客户端使用HttpClient发起web数据访问
  5. android 查看系统数据库
  6. Android 中对JSON数据解析实例代码
  7. 开发Android程序使用USB连接真机调试时找不到设备的解决办法
  8. 非root下,如何将android中的数据库文件存放到外部存储并导出
  9. android 数据储存——--SQLite存储方式(3)

随机推荐

  1. Version of SQLite used in Android?
  2. Android基础(四) 常用控件
  3. 关于Android(安卓)火车票查询App
  4. Android(安卓)html+动态添加控件,实现text
  5. Android 再按一次返回键退出 代码
  6. android多屏幕适配相关知识和官方翻译文
  7. android技术牛人博客
  8. Android Looper&Handler 源码
  9. android序列化与反序列话HashMap到sqlite
  10. android:设计一个具有3个选项的菜单程序,