android 升级包检测并更新实现
16lz
2021-12-04
android 升级包检测并更新实现
实现步骤:
1.获取当前android程序的包名或版本代码
上面的版本代码是我们在AndroidManifest.xml配置的
2.启动软件时从远程服务器端获取版本代码
3.当前程序版本代码与远程获取的比对,不同则升级
4.启动线程下载远程应用
a.获取android手机安装apk路径和相关权限
b.下载安装包apk
在AndroidManifest.xml配置的权限
实现步骤:
1.获取当前android程序的包名或版本代码
public class Version {public int getCode() { //android.content.ContextWrapper.getPackageManager()PackageManager packageManager = app.getPackageManager();int code = -1;try {code = packageManager.getPackageInfo(Package.name, 0).versionCode;}catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}return code;}public String getName() {PackageManager packageManager = app.getPackageManager();String name = null;try {name = packageManager.getPackageInfo(Package.name, 0).versionName;}catch (PackageManager.NameNotFoundException e) {e.printStackTrace();}return name;}}
上面的版本代码是我们在AndroidManifest.xml配置的
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.test.mobile" android:versionCode="100000100"android:versionName="1.0.1">
2.启动软件时从远程服务器端获取版本代码
versionName = app.server.getContent("/dist/version.txt").trim();
3.当前程序版本代码与远程获取的比对,不同则升级
if (currentVersionName.equals(versionName) || StrFuncs.isEmpty(versionName)) {return false;}
4.启动线程下载远程应用
a.获取android手机安装apk路径和相关权限
apkFilePath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/temp/test_android.apk";apkFile = new File(apkFilePath);if (apkFile.exists()) {apkFile.delete();}
b.下载安装包apk
handler = new Handler();new Thread() {@Overridepublic void run() {app.server.download("/dist/test_android.apk", apkFilePath);handler.post(new Runnable() {public void run() {progressDlg.cancel();}});Intent intent = new Intent(Intent.ACTION_VIEW);intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");fromActivity.startActivity(intent);fromActivity.finish();}}.start();
在AndroidManifest.xml配置的权限
<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
更多相关文章
- 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
- Android(安卓)Timer 更好方法
- android studio 日期选择DatePickerDialog取值
- googleMap----放大,缩小,东南西北,四种视图切换代码
- Android(安卓)ListView 最后一行分割线不显示
- Android中RadioGroup组与onCheckedChanged事件
- Android(安卓)NDK JNI 入门笔记-day01-创建项目并运行
- Android(安卓)通过OKhttp3进行下载实现版本更新
- 三行代码去Android(安卓)USB ADB调试确认对话框