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里面:
<receiver android:name=".PackageReceiver">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_ADDED" />
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<action android:name="android.intent.action.PACKAGE_REMOVED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
为什么在bluestack模拟器中可以监听到自己应用的覆盖安装,而在真机中却监听不到呢。 android BroadcastReceiver 监听应用覆盖安装
[解决办法]
你的应用有activity吗?能收到boot complete广播吗?
[解决办法]
你在哪台机器上测试的?
[解决办法]
自身的升级替换是监听不到的 因为你执行完安装的操作后 应用本身已经被杀掉了
[解决办法]
曲线救国吧,把版本号保存起来,启动应用时获取应用版本,跟上一次保存的版本进行比较,如果大的话,就说明刚安装了新版本。
int versionCode = context.getPackageManager().getPackageInfo(context.getPackageName(),
0).versionCode;
int version = PrefUtil.getLastVersion(context);//get last restore version
if(version < versionCode){
PrefUtil.setLastVersion(context, versionCode);//restore new version
//do something.
}
[解决办法]
自身的升级替换是监听不到的 因为你执行完安装的操作后 应用本身已经被杀掉了
我如果先安装了A应用,然后覆盖安装B应用,怎么能在A应用中获取B应用的配置文件和A应用的配置文件一块儿使用呢?
你指的配置文件是什么? 还有 你用b覆盖a a是启动不了的
[解决办法]
能不能写一个全局的监听应用覆盖安装的广播,就是不随应用的卸载而消亡的?
[解决办法]
自身的升级替换是监听不到的 因为你执行完安装的操作后 应用本身已经被杀掉了
我如果先安装了A应用,然后覆盖安装B应用,怎么能在A应用中获取B应用的配置文件和A应用的配置文件一块儿使用呢?
你指的配置文件是什么? 还有 你用b覆盖a a是启动不了的
就是本地存储在assets目录下的一个文件,记录一些该安装包的配置信息。用b覆盖a,a是可以启动的。
你确定b覆盖a后 还可以启动a? 相同的包名?