Android----- 版本更新和 伺服器下載新版本APK並安裝
阿新 • • 發佈:2019-01-23
前段時間有朋友問我版本更新的問題,所以來寫一篇版本更新和APK下載並安裝的部落格。
版本更新,幾乎在所有的專案中都用的到,一般是這樣的流程,當進入APP首頁是便會檢測版本是否為最新版本,不是則提示你下載更新;
版本更新需要後臺和移動端共同來完成,後臺一般用一個介面 來返回給移動端最新版本的資訊,移動端接收資訊後和APP自身版本比較,如果不相同則提示使用者更新 APP。
所以當移動端開發者做完並更新版本後 打包提交到後臺,後臺更新APP版本資訊,就可以完成版本更新了。
看看我的專案的效果圖:
首頁進來開始檢測 提示更新APP,點選確定,下載APK檔案,之後跳轉安裝見面,點選安裝,安裝完成後,清除安裝包。
獲取移動端版本號
/**** * 獲取移動端版本號 * 格式可根據比較方式自己設定 * * @param activity * @return */ public static final String getVersion(Activity activity) { try { PackageManager manager = activity.getPackageManager(); PackageInfo info = manager.getPackageInfo(activity.getPackageName(), 0); String version =info.versionCode+"."+info.versionName; return version; } catch (Exception e) { return ""; } }
網路請求資料解析比較,彈框提示 下載更新
String version="伺服器版本"; if (!version.equals(Util.getVersion(MainActivity.this))){ centerDialog = new CenterDialog(MainActivity.this, R.layout.dialog_center_layout, new int[]{R.id.dialog_cancel, R.id.dialog_sure}, "伺服器APK下載連結"); centerDialog.setOnCenterItemClickListener(MainActivity.this); centerDialog.show(); }
之後就根據連結,下載APK,並安裝
/****
* 伺服器下載APK檔案
* @param context
* @param url
*/
public static void showDownloadAPK(final Context context, final String url) {
new Thread(new Runnable() {
@Override
public void run() {
OkHttpUtils
.get()
.url(url)
.build()
.execute(new FileCallBack(Environment.getExternalStorageDirectory().getAbsolutePath(),"cg.apk") {//儲存路徑 APK名稱
@Override
public void onError(Call call, Exception e, int id) {
}
@Override
public void inProgress(float progress, long total, int id) {
super.inProgress(progress, total, id);
}
@Override
public void onResponse(File response, int id) {
showSelectAPK(context);
}
});
}
}).start();
}
安裝APK
/***
* 調起安裝APP視窗 安裝APP
* @param context
*/
private static void showSelectAPK(Context context){
File fileLocation = new File(Environment.getExternalStorageDirectory(), "cg.apk");//APK名稱
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setDataAndType(Uri.fromFile(fileLocation), "application/vnd.android.package-archive");
context.startActivity(intent);
}
我的程式碼是寫的比較簡單,不過功能是可以實現的,你可以自己封裝。
網路請求和下載檔案可用於其他方式實現,測試介面我刪除了的,
有問題可以掃頭像加新建立的群@我