android 版本更新 静默安装及自启动

    前段时间公司要求实现app的静默升级安装并自启动,写完都有一个多月了,现在总结下.公司的app只会安装在我们定制的广告平板上,所以都是有root权限的,至于如何获取root权限,这里就不说了.直接上代码

    一:当前版本号与服务器版本对比 如有更新则去服务器下载新版本

// 获取当前软件版本号
versionCode=context.getPackageManager().
        getPackageInfo(context.getPackageName(), 0).versionCode;

       再去服务器获取新版本号,网络请求就不讲了,方法很多,得到两个版本号之后对比有新的则去服务器下载新版本APK

    二:将新版本apk存至sd卡

Process prcess=getRuntime.exec("su");//申请root权限

再执行adb命令:"pm install -r "+apkPath,

这一步就执行完静默安装了,一个执行adb命令的工具(这个工具是我在网上找的,找不到原作者....如被原作者碰到 我就删了):执行adb命令工具

    三;自启动,也算是最难的一部分

这块做的时候在网上找了很多资料,发现有的地方并没有网上讲的那么复杂,最后完成的思路是注册了一个广播,监听是否重新装了安装包

<receiver android:name=".broadcastreceiver.BCRUpgradeApk"
    >
    <intent-filter>
        <action android:name="android.intent.action.PACKAGE_REPLACED"/>
        <data android:scheme="package"/>
    </intent-filter>

</receiver>

注册这个广播的时候碰到了一个坑爹的问题,我们这个app之前也有一个广播监听开机自启动,把两个广播写在一个receiver里面就不起作用,分开写好了,也不知道为什么.....有人知道可以告诉下我

在收到这个广播的时候自启动就ok了

if (intent.getAction().equals("android.intent.action.PACKAGE_REPLACED")){
       Toast.makeText(context,"升级了一个安装包",Toast.LENGTH_SHORT).show();

       Intent intent2 = new Intent(context, StartUpActivity.class);
       intent2.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
       context.startActivity(intent2);

   }

我这样写是完美实现哦.....!!!!!,实现了才发现没有网上说的那么复杂

所需的权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
<uses-permission android:name= "android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES"
    tools:ignore="ProtectedPermissions" />

总共就这么多啦! 完事 


一个多月之前完成的现在才总结....以后有时间了及时总结!!!!!!!!



  • 3
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值