浏览代码

修改分机不能正常更新APP的问题 2修改分机不实时个更新分机数据的问题

wangjk 4 年之前
父节点
当前提交
ba80a659cc

二进制
.idea/caches/build_file_checksums.ser


+ 1 - 1
app/build.gradle

@@ -31,7 +31,7 @@ android {
         minSdkVersion 15
         targetSdkVersion 26
         versionCode 1
-        versionName "1.41"
+        versionName "1.43"
         testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
 
         buildConfigField "String", "BUILD_TIME", getDate()

+ 3 - 0
app/src/main/java/com/wdkl/callingbed/ui/APPUpdateActivity.java

@@ -38,6 +38,8 @@ public class APPUpdateActivity extends BaseActivity {
     String downLoadURL = "";
     boolean isDownloading = false;
 
+    public static  APPUpdateActivity appUpdateActivity;
+
     @Override
     public int getLayoutId() {
         return R.layout.activity_appupdate_layout;
@@ -58,6 +60,7 @@ public class APPUpdateActivity extends BaseActivity {
 
     @Override
     protected void initData() {
+        appUpdateActivity = this;
         downLoadURL = getIntent().getStringExtra("downLoadURL");
         if (StringUtils.notEmpty(downLoadURL)) {
             downLoadAPK(downLoadURL);

+ 4 - 1
app/src/main/java/com/wdkl/callingbed/ui/CallingBedActivity.java

@@ -138,6 +138,8 @@ import static com.wdkl.callingbed.util.sendcommand.CallingBedSendCommand.setWSHL
 
 public class CallingBedActivity extends BaseActivity implements ISerialPortBedOnclickEvent, SerialPortUtil.ISerialPortBedOnclickString, IMediaPlayerVolume, IVvsipServiceListener
         , SipCallBackI, MediaPlayerManger.PlayMusicCompleteListener {
+    private String TAG = InitActivity.class.getSimpleName();
+
 
     //初始化数据实体
     private InitDataEntity initDataEntity;
@@ -1047,9 +1049,10 @@ public class CallingBedActivity extends BaseActivity implements ISerialPortBedOn
                             try {
                                 JSONObject object = new JSONObject(data);
                                 if (object.getString("Code").equals("OK!")) {
-                                    float APPVersion = StringUtils.parseFloat(StringUtils.deleteCharAt(object.getString("APPVersion"), 0));
+                                    float APPVersion = StringUtils.parseFloat(object.getString("APPVersion"));
                                     float APPVersion_Now = StringUtils.parseFloat(StringUtils.getAppVersionName(CallingBedActivity.this));
                                     String downloadURL = object.getString("downloadURL");
+                                    Log.e(TAG,"appCheckUpdate() 服务器返回版本 "+APPVersion+" 设备当前版本 "+APPVersion_Now);
                                     if (APPVersion_Now != APPVersion) {//本来是“<”的;但有个别机器老是不升级成功
                                         if (StringUtils.notEmpty(downloadURL)) {
                                             closeHeart();//关闭心跳

+ 5 - 1
app/src/main/java/com/wdkl/callingbed/ui/InitActivity.java

@@ -9,6 +9,7 @@ import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.os.Handler;
 import android.os.Message;
+import android.util.Log;
 import android.view.View;
 import android.widget.ImageView;
 
@@ -57,6 +58,8 @@ import static com.wdkl.callingbed.util.sendcommand.CallingBedSendCommand.setNurs
  */
 
 public class InitActivity extends BaseActivity implements SerialPortUtil.ISerialPortBedOnclickEvent, SerialPortUtil.ISerialPortBedOnclickString {
+    private String TAG = InitActivity.class.getSimpleName();
+
     @Bind(R.id.activity_init_layout_rl)
     View initView;
     @Bind(R.id.activity_init_layout_iv_loading)
@@ -220,8 +223,9 @@ public class InitActivity extends BaseActivity implements SerialPortUtil.ISerial
                             try {
                                 JSONObject object = new JSONObject(data);
                                 if (object.getString("Code").equals("OK!")) {
-                                    float APPVersion = StringUtils.parseFloat(StringUtils.deleteCharAt(object.getString("APPVersion"), 0));
+                                    float APPVersion = StringUtils.parseFloat(object.getString("APPVersion"));
                                     float APPVersion_Now = StringUtils.parseFloat(StringUtils.getAppVersionName(InitActivity.this));
+                                    Log.e(TAG,"appCheckUpdate() 服务器返回版本 "+APPVersion+" 设备当前版本 "+APPVersion_Now);
                                     String downloadURL = object.getString("downloadURL");
                                     if (APPVersion_Now != APPVersion) {//本来是“<”的;但有个别机器老是不升级成功
                                         if (StringUtils.notEmpty(downloadURL)) {

+ 2 - 0
app/src/main/java/com/wdkl/callingbed/util/AnalysisUdpUtil.java

@@ -1,6 +1,8 @@
 package com.wdkl.callingbed.util;
 
 import android.content.Context;
+import android.nfc.Tag;
+import android.util.Log;
 
 import com.wdkl.callingbed.MyApplication;
 import com.wdkl.callingbed.common.Constants;

+ 28 - 0
app/src/main/java/com/wdkl/callingbed/util/DownloadUtils.java

@@ -5,6 +5,7 @@ import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.pm.PackageManager;
 import android.database.Cursor;
 import android.net.Uri;
 import android.os.Build;
@@ -15,6 +16,8 @@ import android.widget.Toast;
 
 import java.io.File;
 import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
 
 /**
  * 类名称:DownloadUtil <br>
@@ -186,4 +189,29 @@ public class DownloadUtils {
          */
         void onDownloadFailed();
     }
+
+
+    public boolean silentInstall(String apkPath) {
+        PackageManager packageManager = mContext.getPackageManager();
+        Class pmClz = packageManager.getClass();
+        try {
+            if (Build.VERSION.SDK_INT >= 21) {
+                Class aClass = Class.forName("android.app.PackageInstallObserver");
+                Constructor constructor = aClass.getDeclaredConstructor();
+                constructor.setAccessible(true);
+                Object installObserver = constructor.newInstance();
+                Method method = pmClz.getDeclaredMethod("installPackage", Uri.class, aClass, int.class, String.class);
+                method.setAccessible(true);
+                method.invoke(packageManager, Uri.fromFile(new File(apkPath)), installObserver, 2, null);
+            } else {
+                Method method = pmClz.getDeclaredMethod("installPackage", Uri.class, Class.forName("android.content.pm.IPackageInstallObserver"), int.class, String.class);
+                method.setAccessible(true);
+                method.invoke(packageManager, Uri.fromFile(new File(apkPath)), null, 2, null);
+            }
+            return true;
+        } catch (Exception e) {
+            LogUtil.e("install", e.toString());
+        }
+        return false;
+    }
 }

+ 28 - 5
app/src/main/java/com/wdkl/callingbed/util/silentupdate/SilentUpdateUtil.java

@@ -5,11 +5,16 @@ import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.net.Uri;
+import android.os.Build;
 import android.os.IBinder;
+import android.util.Log;
 
 import com.wdkl.callingbed.MyApplication;
 import com.wdkl.callingbed.common.Constants;
+import com.wdkl.callingbed.ui.APPUpdateActivity;
 import com.wdkl.callingbed.util.AutoRebootUtil;
+import com.wdkl.callingbed.util.DownloadUtil;
+import com.wdkl.callingbed.util.DownloadUtils;
 import com.wdkl.callingbed.util.LogUtil;
 import com.wdkl.callingbed.util.ToastUtil;
 
@@ -31,6 +36,7 @@ import static com.wdkl.callingbed.util.DownloadUtil.FILE_APK_PATH;
  */
 
 public class SilentUpdateUtil {
+    private static String TAG = SilentUpdateUtil.class.getSimpleName();
 
     /**
      * 升级
@@ -97,11 +103,28 @@ public class SilentUpdateUtil {
             return;
         }
 
-        if (new SilentInstall().install(APK_PATH)) {
-            doRestart(context);
-        } else {
-            LogUtil.d("apk", "安装失败");
-        }
+//        if (Build.VERSION.SDK_INT >= 26) {
+            //rk3368 8.1
+            DownloadUtils downloadUtils = new DownloadUtils(context);
+            if (downloadUtils.silentInstall(DownloadUtil.FILE_APK_PATH + "/" + DownloadUtil.FILE_APK_NAME)) {
+                ToastUtil.showToast("升级成功,即将重启!");
+            }
+//        } else {
+//
+//
+//        }
+
+
+
+
+
+//        if (new SilentInstall().install(APK_PATH)) {
+//            Log.e(TAG, "APK安装成功");
+//            APPUpdateActivity.appUpdateActivity.finish();
+//            doRestart(context);
+//        } else {
+//            LogUtil.d("apk", "安装失败");
+//        }
     }
 
     private static boolean installApp(String packageName, String apkPath) {