瀏覽代碼

<修改自动升级流程>

weizhengliang 5 年之前
父節點
當前提交
9e71581266

+ 1 - 1
app/src/main/java/com/wdkl/callingbed2/ui/APPUpdateActivity.java

@@ -92,7 +92,7 @@ public class APPUpdateActivity extends BaseActivity {
                     ToastUtil.showToast("正在安装中...");
                     LogUtil.d(APPUpdateActivity.class, "下载==APP_UPDATE_SUCSSED");
                     //升级
-                    SilentUpdateUtil.updateApk(APPUpdateActivity.this);
+                    SilentUpdateUtil.updateApk2(APPUpdateActivity.this);
                     break;
                 case APP_UPDATE_ING:
                     int progress = (int) msg.obj;

+ 2 - 2
app/src/main/java/com/wdkl/callingbed2/util/DownloadUtil.java

@@ -27,11 +27,11 @@ public class DownloadUtil {
     /**
      * 下载的APK文件绝对路径
      */
-    public static final String FILE_APK_PATH = Environment.getExternalStorageDirectory() + "/CallingBed";
+    public static final String FILE_APK_PATH = Environment.getExternalStorageDirectory() + "/CallingBed2";
     /**
      * 下载的APK文件的文件名
      */
-    public static final String FILE_APK_NAME = "CallingBedAPK.apk";
+    public static final String FILE_APK_NAME = "CallingBed2APK.apk";
     /**
      * 下载的APP版本号
      */

+ 57 - 0
app/src/main/java/com/wdkl/callingbed2/util/silentupdate/SilentUpdateUtil.java

@@ -10,7 +10,9 @@ import android.os.IBinder;
 import com.wdkl.callingbed2.util.AutoRebootUtil;
 import com.wdkl.callingbed2.util.LogUtil;
 
+import java.io.BufferedReader;
 import java.io.File;
+import java.io.InputStreamReader;
 import java.lang.reflect.Method;
 import java.util.ArrayList;
 import java.util.List;
@@ -63,6 +65,61 @@ public class SilentUpdateUtil {
         }
     }
 
+    public static void updateApk2(Context context) {
+        if (checkIsExitAPK(context)) {
+            LogUtil.d("apk", "文件存在");
+        } else {
+            LogUtil.d("apk", "文件不存在");
+            return;
+        }
+
+        String path = FILE_APK_PATH + "/" + FILE_APK_NAME;
+        if (installApp(context.getPackageName(), path)) {
+            doRestart(context);
+        } else {
+            LogUtil.d("apk", "安装失败");
+        }
+    }
+
+    private static boolean installApp(String packageName, String apkPath) {
+        Process process = null;
+        BufferedReader successResult = null;
+        BufferedReader errorResult = null;
+        StringBuilder successMsg = new StringBuilder();
+        StringBuilder errorMsg = new StringBuilder();
+        try {
+            process = new ProcessBuilder("pm", "install", "-i", packageName, "-r", apkPath).start();
+            successResult = new BufferedReader(new InputStreamReader(process.getInputStream()));
+            errorResult = new BufferedReader(new InputStreamReader(process.getErrorStream()));
+            String s;
+            while ((s = successResult.readLine()) != null) {
+                successMsg.append(s);
+            }
+            while ((s = errorResult.readLine()) != null) {
+                errorMsg.append(s);
+            }
+        } catch (Exception e) {
+
+        } finally {
+            try {
+                if (successResult != null) {
+                    successResult.close();
+                }
+                if (errorResult != null) {
+                    errorResult.close();
+                }
+            } catch (Exception e) {
+
+            }
+            if (process != null) {
+                process.destroy();
+            }
+        }
+        LogUtil.e("result", "" + errorMsg.toString());
+        //如果含有“success”认为安装成功
+        return successMsg.toString().equalsIgnoreCase("success");
+    }
+
     /**
      * 检查是否存在apk
      */