android 升级包检测并更新实现
16lz
2021-01-23
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" />
更多相关文章
- Android系统信息(内存、cpu、sd卡、电量、版本)获取
- Android应用程序组件Content Provider的启动过程源代码分析(3)
- Android权限【大全】
- Android应用程序组件Content Provider的启动过程源代码分析(5)
- ANDROID PAD版本 PHONE版本 源码有什么 区别?
- Android各个版本API的区别
- Android获取ROOT权限
- Android 解屏代码