本文共 2063 字,大约阅读时间需要 6 分钟。
android监听自身应用覆盖安装
按照网上所说自定义PackageReceiver类继承BroadcastReceiver,重写onReceive方法。
// 安装
if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED")) {
String packageName = intent.getDataString();
System.out.println("android.intent.action.PACKAGE_ADDED---------------" + packageName);
}
// 覆盖安装
if (intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")) {
String packageName = intent.getDataString();
System.out.println("android.intent.action.PACKAGE_REPLACED---------------" + packageName);
}
// 移除
if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED")) {
String packageName = intent.getDataString();
System.out.println("android.intent.action.PACKAGE_REMOVED---------------" + packageName);
}
然后AndroidManifest.xml里面:
为什么在bluestack模拟器中可以监听到自己应用的覆盖安装,而在真机中却监听不到呢。
android
BroadcastReceiver
监听应用覆盖安装
分享到:
------解决方案--------------------
你的应用有activity吗?能收到boot complete广播吗?
------解决方案--------------------
引用:Quote: 引用:你的应用有activity吗?能收到boot complete广播吗?
有activity,但是没使用boot complete广播,能说说具体思路吗?
你在哪台机器上测试的?
------解决方案--------------------
自身的升级替换是监听不到的 因为你执行完安装的操作后 应用本身已经被杀掉了
------解决方案--------------------
曲线救国吧,把版本号保存起来,启动应用时获取应用版本,跟上一次保存的版本进行比较,如果大的话,就说明刚安装了新版本。
int versionCode = context.getPackageManager().getPackageInfo(context.getPackageName(),
0).versionCode;
int version = PrefUtil.getLastVersion(context);//get last restore version
if(version
PrefUtil.setLastVersion(context, versionCode);//restore new version
//do something.
}
------解决方案--------------------
引用:Quote: 引用:自身的升级替换是监听不到的 因为你执行完安装的操作后 应用本身已经被杀掉了
我如果先安装了A应用,然后覆盖安装B应用,怎么能在A应用中获取B应用的配置文件和A应用的配置文件一块儿使用呢?
你指的配置文件是什么? 还有 你用b覆盖a a是启动不了的
------解决方案--------------------
引用:能不能写一个全局的监听应用覆盖安装的广播,就是不随应用的卸载而消亡的?不能的。应用覆盖安装的过程是先停止当前正在运行的应用,然后进行文件覆盖再安装的,安装完成之后,再发出android.intent.action.PACKAGE_REPLACED广播。
------解决方案--------------------
引用:Quote: 引用:Quote: 引用:Quote: 引用:自身的升级替换是监听不到的 因为你执行完安装的操作后 应用本身已经被杀掉了
我如果先安装了A应用,然后覆盖安装B应用,怎么能在A应用中获取B应用的配置文件和A应用的配置文件一块儿使用呢?
你指的配置文件是什么? 还有 你用b覆盖a a是启动不了的
就是本地存储在assets目录下的一个文件,记录一些该安装包的配置信息。用b覆盖a,a是可以启动的。
你确定b覆盖a后 还可以启动a? 相同的包名?
转载地址:https://blog.csdn.net/weixin_33073525/article/details/117530786 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!