程序中XXXX部分和//TODO部分根据具体项目进行修改和完善。

public class UpdateHelper {

private static final String TAG = "UpdateHelper";

private static final String FILE_PROVIDER_AUTHORITY = "XXXX";

private static final String DATA_AND_TYPE = "application/vnd.android.package-archive";

private static final String UPDATE_URL = "XXXX";

public static boolean checkForUpdated(Context context) {

boolean updated = false;

try {

int currentVersion = context.getPackageManager().getPackageInfo(context.getPackageName(), 0).versionCode;

} catch (PackageManager.NameNotFoundException e) {

e.printStackTrace();

}

//TODO 获取服务端最新版本号,与currentVersion做比较

return updated;

}

public static void autoInstallUpdate(final Context context) {

OkGo.get(UPDATE_URL).tag(context).execute(new FileCallback() {

@Override

public void onSuccess(Response response) {

File file = response.body();

setPermission(file.getPath());

installApk(context, file.getPath());

}

@Override

public void onError(Response response) {

super.onError(response);

//TODO 网络请求出错

}

@Override

public void onFinish() {

super.onFinish();

//TODO 网络请求结束

}

@Override

public void downloadProgress(Progress progress) {

super.downloadProgress(progress);

int fraction = (int) (progress.fraction * 100);

//TODO 下载中,显示下载进度

}

});

}

private static void installApk(Context context, String apkPath) {

Intent intent = new Intent(Intent.ACTION_VIEW);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

File file = new File(apkPath);

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.N) {

Uri apkUri = FileProvider.getUriForFile(context, FILE_PROVIDER_AUTHORITY, file);

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

intent.setDataAndType(apkUri, DATA_AND_TYPE);

} else {

Uri apkUri = Uri.fromFile(file);

intent.setDataAndType(apkUri, DATA_AND_TYPE);

}

context.startActivity(intent);

}

private static void setPermission(String filePath) {

String command = "chmod " + "777" + " " + filePath;

Runtime runtime = Runtime.getRuntime();

try {

runtime.exec(command);

} catch (IOException e) {

e.printStackTrace();

}

}

}

android更新版本下载安装,Android版本更新下载apk自动安装的方法相关推荐

  1. Android7.0下载Apk自动安装

    Android7.0下载Apk自动安装 1. 整体需求 下载APK文件 使用DownloadManager来下载 在应用界面中展示下载进度 安装下载后的APK文件 root模式: 可以自动安装,不需要 ...

  2. android 监听安装来源_Flutter插件开发之APK自动安装

    点击上方的终端研发部,右上角选择"设为星标" 每日早9点半,技术文章准时送上 公众号后台回复"学习",获取作者独家秘制精品资料 往期文章 记五月的一个Andro ...

  3. linux自动安装光盘,Linux(centos6.4)自动安装光盘制作

    一.为什么要制作Linux自动安装光盘 1.机房的服务器少则几十台,多则上百台,几千台,安装的时候,这么多的服务器不可能一台一台的安装,这时候就需要自动安装光盘的协助. 2.如果机房的某台服务器需要格 ...

  4. Android 更新版本 应用程序未安装 解决办法

    问题描述 在做Android应用版本更新时遇到一个问题,在原始的版本中进行升级,下载了新版的app后安装时,手机报"应用未安装",升级失败. 如下图所示: 分析原因 主要有两个方面 ...

  5. php 自动下载apk,Android 下载apk 自动 安装

    Android N 后,由于不能访问私有路径,需要设置成共享文件 /** * android N 执行此安装方法 * * @param context 上下文 * @param file 文件路径 * ...

  6. 解决xshell6或者xftp6强制更新版本,但又无法下载文件的问题

    今天又遇到下载安装了 Xshell 6 或者Xftp 6提示软件必须更新最新版否则不让使用!但是下载更新又提示下载文件失败?这是为啥呢? 主要原因:今年NetSarang官网针对免费版和评估版,仅提供 ...

  7. android更新后名称不变,Android 10这个新名字虽然无聊 但改名却是正确之举

    本文由腾讯数码独家发布 自从2009年谷歌发布Android 1.5 Cupcake系统以来,安卓的每个新版本系统在数字后面都会加一个糕点或甜品的名称来起到点缀以及个性化的作用.比如对我个人来说,冰淇 ...

  8. android 运行版本不兼容,Android开发之——版本兼容性问题

    Android系统中向下兼容性比较差,实际开发和测试中会遇到版本兼容性的问题,本题的成文参考了网上的部分教程和个人在开发中的实例,进行归纳和总结而成. 版本兼容问题 版本兼容性: Android系统中 ...

  9. android 系统版本 发布时间,Android O版本系统将在8月21日正式发布

    关于即将发布的Android O版本系统,现在还有很多让人感到困惑的地方.尽管谷歌之前表示将在8月发布Android O的正式版,但是具体的发布日期却被推迟,因此许多Android粉丝都对新版本系统更 ...

  10. Android——查看Android Studio版本支持的Android版本问题

    android studio各版本支持的android 版本是有规定的.比如如果使用的是android 2.3.3的话,那么现在如果想使用android p版本的sdk tool的话,可能存在问题,同 ...

最新文章

  1. Android属性 android:focusableInTouchMode
  2. MINA与JMX集成(翻译)
  3. 哲学家就餐问题php代码,Python实现哲学家就餐问题实例代码
  4. linux中国用户,Linux中国 适合新用户的Linux
  5. 一个简单的单例模式的类
  6. JUC 中断线程的3种方式
  7. 4.XXE (XML External Entity Injection)
  8. L2TP详解(五)——Client Initiated隧道和会话建立过程
  9. 王道训练营—Java编程经典50题
  10. 4个步骤教你建立中后台后台通用权限管理系统
  11. MyBatis递归查询
  12. 【CodingNoBorder - 10】无际软工队 - 求职岛:ALPHA 阶段事后分析
  13. 2种方式!带你快速实现前端截图
  14. 云计算发展趋势-华为HCIA云计算学习笔记六
  15. 草莓电吉他音源 Orange Tree Samples Evolution Strawberry Kontakt
  16. golang并发模式work
  17. Hololens动态显示图片
  18. 越来越大的人使用计算机的原因,为什么越来越多的人喜欢用WPS这款电脑软件?这几点是关键原因...
  19. mac 微信多开 应用程序多开
  20. 51单片机仿真例程-双机串行通信

热门文章

  1. C#批量发送短信操作
  2. 华为手机连接电脑,无法使用USB调试或者无USB连接弹窗的问题
  3. 微信小程序开发出现Page “pages/detail/detail” has not been registered yet.
  4. Vue脚手架H5公众号微信登陆问题及解决方式
  5. 大师教你在网吧免费上网
  6. 头脑极度开放:前额皮层大战杏仁核
  7. 编译原理(整体理解)
  8. RAID磁盘阵列介绍
  9. windows主机防火墙启用ICMP入站
  10. mysql多表格数据合并_mysql 如何实现两个表数据统计合并