Android中如何实现版本更新
来源:互联网 发布:北京思学通软件好用吗 编辑:程序博客网 时间:2024/06/06 19:51
在App上线后可能后续对程序进行部分更新,版本更新的主要思想是打开app,在联网的情况下,请求服务器,判断服务器上App的版本号是否与手机上的app版本号相同,如果相同则程序正常进行,如果不同弹出对话框,提示用户是否更新app版本,如果更新则更新app,并完成安装。
<– 使用网络功能所需权限 –>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- SD卡读写权限 --> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WAKE_LOCK" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1.获取当前程序的版本名字
/** * 获取当前程序的版本名字 * @return 版本号名字 */ public String getVersionName() { String versionName = null; // PackageManager 可以获取清单文件的所有信息(Gradle) PackageManager manager = getPackageManager(); try { // getPackageInfo 获取当前程序的包信息 PackageInfo packageInfo = manager.getPackageInfo("包名", 0); versionName = packageInfo.versionName + ""; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); // can't reach return ""; } return versionName;}
2.请求服务器获取服务器中app的版本信息进行比对,如果不同弹出对话框提示更新。
/** * 下载一个新版本 */ protected void downloadNewApk() { httpUtils = new HttpUtils(); LogUtils.e("log", "下载新版本"); LogUtils.e("log", "下载位置: apk:" + apkUrl); // 1.下载路径 2.目标路径 if (TextUtils.isEmpty(apkUrl)) { return; } String fileName = apkUrl.substring(apkUrl.lastIndexOf("/")); target = Environment.getExternalStorageDirectory().getPath() + fileName;//apk下载的位置 LogUtils.e("log", "下载位置:" + target + " apk:" + apkUrl); httpUtils.download(apkUrl, target, new RequestCallBack<File>() { // 下载成功时调用 @Override public void onSuccess(ResponseInfo<File> arg0) { Toast.makeText(getApplicationContext(), "下载成功!", Toast.LENGTH_SHORT).show(); tv_process.setVisibility(View.GONE); // 安装新版本 installApk(); } // 下载失败时调用 @Override public void onFailure(HttpException arg0, String arg1) { Toast.makeText(getApplicationContext(), "下载失败!", Toast.LENGTH_SHORT).show(); tv_process.setVisibility(View.GONE); } // 下载时调用 @Override public void onLoading(long total, long current, boolean isUploading) { super.onLoading(total, current, isUploading); tv_process.setVisibility(View.VISIBLE);// 显示控件 tv_process.setText("当前进度:" + FormatUtils.sizeFormatNum2String(current) + "/" + "总进度:" + FormatUtils .sizeFormatNum2String(total)); } }); }
3.下载成功后,完成安装
/** * 安装应用程序 */protected void installApk() { // 调用系统的工程去安装 打开系统的apk 安装 Intent intent = new Intent("android.intent.action.VIEW"); intent.addCategory("android.intent.category.DEFAULT"); intent.setDataAndType(Uri.fromFile(new File(target)), "application/vnd.android.package-archive"); startActivityForResult(intent, 0);}
0 0
- Android中如何实现版本更新
- Android中如何实现版本更新
- Android中实现版本更新(二)自定义更新
- Android中实现版本更新(二)自定义更新
- Android版本更新实现
- Android中版本更新
- android中如何实现循环更新UI
- 如何更新Android Studio版本
- android中DownloadManager实现版本更新,监听下载进度实例
- Android 版本更新的实现
- Android App 版本更新实现
- android 版本更新的实现
- 如何在Android studio中更新sdk版本和build-tools版本
- Android中实现版本更新(一)使用第三方sdk更新
- ios项目如何实现版本更新?
- ios项目如何实现版本更新?
- ios项目如何实现版本更新?
- ios项目如何实现版本更新?
- php 获取下一周的日期数组
- Java爬虫框架WebMagic的使用总结
- SQL高级语法-RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
- webpack入门与解析(一)
- spring后置处理器
- Android中如何实现版本更新
- onclick事件
- Speex回声消除代码分析
- 172. Factorial Trailing Zeroes
- c++第一次试验
- HDU1431 素数回文 (模拟))
- js案例
- Java线程学习笔记之线程局部变量
- php java base64加密