首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android监听本身应用覆盖安装

2013-11-08 
android监听自身应用覆盖安装按照网上所说自定义PackageReceiver类继承BroadcastReceiver,重写onReceive方

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广播吗?
[解决办法]
引用:
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 < versionCode){
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?  相同的包名?

热点排行