diff --git a/FirUpdater/src/main/java/com/sunfusheng/FirAppInfo.java b/FirUpdater/src/main/java/com/sunfusheng/FirAppInfo.java index 1a1eb45..384b0c0 100644 --- a/FirUpdater/src/main/java/com/sunfusheng/FirAppInfo.java +++ b/FirUpdater/src/main/java/com/sunfusheng/FirAppInfo.java @@ -82,7 +82,7 @@ private AppInfo parseResult(String result) { if (!TextUtils.isEmpty(versionCode)) { appInfo.appVersionCode = Integer.parseInt(versionCode); } - appInfo.appVersionName = object.getString("versionShort"); + appInfo.appVersionName = "V"+object.getString("versionShort"); appInfo.appChangeLog = object.getString("changelog"); appInfo.appInstallUrl = object.getString("installUrl"); if (object.has("binary")) { diff --git a/FirUpdater/src/main/java/com/sunfusheng/FirDialog.java b/FirUpdater/src/main/java/com/sunfusheng/FirDialog.java index 18aa89b..269a1c3 100644 --- a/FirUpdater/src/main/java/com/sunfusheng/FirDialog.java +++ b/FirUpdater/src/main/java/com/sunfusheng/FirDialog.java @@ -5,6 +5,7 @@ import android.content.DialogInterface; import android.graphics.Color; import android.support.v7.app.AlertDialog; +import android.text.TextUtils; import android.widget.TextView; import java.lang.reflect.Field; @@ -19,11 +20,20 @@ public class FirDialog { private OnClickDownloadDialogListener onClickDownloadDialogListener; - public void showAppInfoDialog(Context context, String title, String message) { + public void showAppInfoDialog(Context context, FirAppInfo.AppInfo appInfo) { if (alertDialog == null) { + StringBuilder sb = new StringBuilder(); + sb.append("名称:").append(appInfo.appName); + sb.append("\n版本:").append(appInfo.appVersionName); + sb.append("\n文件大小:").append(FirUpdaterUtils.getMeasureSize(appInfo.appSize)); + if (!TextUtils.isEmpty(appInfo.appChangeLog)) { + sb.append("\n\n更新日志:").append(appInfo.appChangeLog); + } + alertDialog = new AlertDialog.Builder(context) - .setTitle(title + "更新提示") - .setMessage(message) + .setCancelable(false) + .setTitle("应用更新提示") + .setMessage(sb) .setPositiveButton("立即更新", (dialog, which) -> { if (onClickDownloadDialogListener != null) { onClickDownloadDialogListener.onClickDownload(dialog); @@ -33,6 +43,7 @@ public void showAppInfoDialog(Context context, String title, String message) { }) .create(); alertDialog.show(); + alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(Color.parseColor("#333333")); alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(Color.parseColor("#9a9a9a")); @@ -43,6 +54,7 @@ public void showAppInfoDialog(Context context, String title, String message) { Field messageView = alertController.getClass().getDeclaredField("mMessageView"); messageView.setAccessible(true); TextView textView = (TextView) messageView.get(alertController); + textView.setTextSize(12); textView.setTextColor(Color.parseColor("#9a9a9a")); } catch (IllegalAccessException e) { e.printStackTrace(); diff --git a/FirUpdater/src/main/java/com/sunfusheng/FirUpdater.java b/FirUpdater/src/main/java/com/sunfusheng/FirUpdater.java index 42e70c3..0b07b6c 100644 --- a/FirUpdater/src/main/java/com/sunfusheng/FirUpdater.java +++ b/FirUpdater/src/main/java/com/sunfusheng/FirUpdater.java @@ -48,19 +48,20 @@ public FirUpdater setApkPath(String apkPath) { public void checkVersion() { new Thread(() -> { appInfo = new FirAppInfo().requestAppInfo(appVersionUrl); - boolean needUpdate = appInfo.appVersionCode > FirUpdaterUtils.getVersionCode(context); + if (appInfo == null) { + return; + } - FirUpdaterUtils.runOnMainThread(() -> { - if (appInfo != null && (forceShowDialog || needUpdate)) { - initFirDialog(); - } - }); + boolean needUpdate = appInfo.appVersionCode > FirUpdaterUtils.getVersionCode(context); + if (forceShowDialog || needUpdate) { + FirUpdaterUtils.runOnMainThread(this::initFirDialog); + } }).start(); } private void initFirDialog() { firDialog = new FirDialog(); - firDialog.showAppInfoDialog(context, appInfo.appName, appInfo.appChangeLog); + firDialog.showAppInfoDialog(context, appInfo); firDialog.setOnClickDownloadDialogListener(new FirDialog.OnClickDownloadDialogListener() { @Override public void onClickDownload(DialogInterface dialog) { diff --git a/FirUpdater/src/main/java/com/sunfusheng/FirUpdaterUtils.java b/FirUpdater/src/main/java/com/sunfusheng/FirUpdaterUtils.java index 9d95ad7..0929a09 100644 --- a/FirUpdater/src/main/java/com/sunfusheng/FirUpdaterUtils.java +++ b/FirUpdater/src/main/java/com/sunfusheng/FirUpdaterUtils.java @@ -1,5 +1,6 @@ package com.sunfusheng; +import android.annotation.SuppressLint; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; @@ -152,6 +153,21 @@ public static void closeQuietly(final Closeable... closeables) { } } + @SuppressLint("DefaultLocale") + public static String getMeasureSize(long byteCount) { + if (byteCount <= 0) { + return "0B"; + } else if (byteCount < 1024) { + return String.format("%.2fB", (double) byteCount); + } else if (byteCount < 1048576) { + return String.format("%.2fKB", (double) byteCount / 1024); + } else if (byteCount < 1073741824) { + return String.format("%.2fMB", (double) byteCount / 1048576); + } else { + return String.format("%.2fGB", (double) byteCount / 1073741824); + } + } + private static final Handler handler = new Handler(Looper.getMainLooper()); public static void runOnMainThread(Runnable runnable) { @@ -162,6 +178,5 @@ public static void runOnMainThread(Runnable runnable) { runnable.run(); } } - } } diff --git a/settings.gradle b/settings.gradle index f313c28..4c40cec 100644 --- a/settings.gradle +++ b/settings.gradle @@ -6,5 +6,5 @@ gradle.ext.supportLibraryVersion = '27.0.2' gradle.ext.minSdkVersion = 14 gradle.ext.targetSdkVersion = 27 -gradle.ext.versionCode = 3 -gradle.ext.versionName = "1.0.2" +gradle.ext.versionCode = 4 +gradle.ext.versionName = "1.0.3"