Răsfoiți Sursa

1.修改Android Apex Mobil程序启动检查更新和Tools点击更新。

Pen Li 8 ani în urmă
părinte
comite
79ca0eadea

+ 144 - 0
Apex Mobile/app/src/main/java/com/usai/apex/ApexTrackingApplication.java

@@ -2,23 +2,36 @@ package com.usai.apex;
 
 import android.app.Activity;
 import android.app.AlarmManager;
+import android.app.AlertDialog;
 import android.app.Application;
+import android.app.DownloadManager;
 import android.app.PendingIntent;
+import android.app.ProgressDialog;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.SharedPreferences;
 import android.content.res.Configuration;
 import android.content.res.Resources;
+import android.net.Uri;
 import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
 import android.os.SystemClock;
 import android.text.TextUtils;
 import android.util.Log;
 
 import com.usai.util.AES;
+import com.usai.util.Network;
 import com.usai.util.RAUtil;
 import com.usai.util.dbUtil;
 
+import org.json.JSONException;
+import org.json.JSONObject;
+
 import java.io.File;
+import java.lang.ref.WeakReference;
+import java.util.UUID;
 
 public class ApexTrackingApplication extends Application
 {
@@ -70,6 +83,7 @@ public class ApexTrackingApplication extends Application
 		registerActivityLifecycleCallbacks(new Application.ActivityLifecycleCallbacks() {
 			@Override
 			public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
+				mCurrentActivity = activity;
 				Resources res = ApexTrackingApplication.getInstance().getResources();
 				Configuration config = new Configuration();
 				config.setToDefaults();
@@ -84,6 +98,8 @@ public class ApexTrackingApplication extends Application
 //				Configuration config = new Configuration();
 //				config.setToDefaults();
 //				res.updateConfiguration(config, res.getDisplayMetrics());
+
+
 			}
 
 			// ...
@@ -161,6 +177,134 @@ public class ApexTrackingApplication extends Application
 		createAppStorageDir();
 	}
 
+	private static final int HandlerMsgTypeCheckUpdate = 0;
+	private Handler handler = new CheckUpdateHandler(this);
+	private Activity mCurrentActivity;
+
+	private static final class CheckUpdateHandler extends Handler {
+
+        WeakReference<ApexTrackingApplication> mWeakApp;
+
+        public CheckUpdateHandler(ApexTrackingApplication application) {
+            mWeakApp = new WeakReference<> (application);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            super.handleMessage(msg);
+            switch (msg.what) {
+                case HandlerMsgTypeCheckUpdate: {
+
+                    final ApexTrackingApplication app = mWeakApp.get();
+                    if (app == null) {
+                        return;
+                    }
+
+                    app.dismissProgressDialog();
+
+                    if (msg.obj == null) {
+
+                    } else {
+
+                        try {
+                            JSONObject jsonObject = new JSONObject((String) msg.obj);
+
+                            final String ver = jsonObject.optString("ver");
+                            final String url = jsonObject.optString("url");
+
+                            if (ver != null && url != null) {
+
+
+
+                                new AlertDialog.Builder(app.mCurrentActivity)
+                                        .setMessage("There is a new version " + ver + " ,are you ready to update it?")
+                                        .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
+                                            @Override
+                                            public void onClick(DialogInterface dialog, int which) {
+                                                app.downloadNewVersionApp(url,ver);
+                                            }
+                                        })
+                                        .setNegativeButton("No",null)
+                                        .show();
+
+                            } else {
+                                new AlertDialog.Builder(app.mCurrentActivity)
+                                        .setMessage("Your App is the latest version")
+                                        .setNegativeButton("Ok",null)
+                                        .show();
+                            }
+
+                        } catch (JSONException e) {
+                            e.printStackTrace();
+                        }
+
+                    }
+                }
+                break;
+
+            }
+        }
+    }
+
+	private void downloadNewVersionApp(String url,String ver) {
+
+	    String appName = RAUtil.getApplicationName(this);
+
+	    if (url == null || appName == null || ver == null) {
+	        return;
+        }
+
+        DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url));
+
+        request.setDestinationInExternalPublicDir("/download/", appName + " " + ver + ".apk");
+
+        DownloadManager downloadManager= (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
+
+        downloadManager.enqueue(request);
+    }
+
+	public void checkUpdate(boolean showProgress,String alertMsg) {
+		if (showProgress) {
+			showProgressDialog(alertMsg);
+		}
+		new Thread(new Runnable() {
+			@Override
+			public void run() {
+
+				String jsonStr = Network.checkUpdate(instance);
+				Message msg = new Message();
+				msg.what = HandlerMsgTypeCheckUpdate;
+				msg.obj = jsonStr;
+				handler.sendMessage(msg);
+
+			}
+		}).start();
+
+	}
+
+	private ProgressDialog mProgressDialog;
+
+	public void showProgressDialog(String msg) {
+
+		if (mProgressDialog == null) {
+			if (this == null) {
+				return;
+			}
+			mProgressDialog = new ProgressDialog(mCurrentActivity);
+			mProgressDialog.setCancelable(false);
+
+		}
+
+        mProgressDialog.setMessage(msg);
+		mProgressDialog.show();
+	}
+
+	public void dismissProgressDialog() {
+		if (mProgressDialog != null && mProgressDialog.isShowing()) {
+			mProgressDialog.dismiss();
+		}
+	}
+
 	public void createAppStorageDir() {
 		String documentDir = getDocumentDir();
 		File docDir = new File(documentDir);

+ 3 - 0
Apex Mobile/app/src/main/java/com/usai/apex/mainframe/RootActivity.java

@@ -316,6 +316,9 @@ public class RootActivity extends AppCompatActivity {
 //                startActivityForResult(intent, 0);
 //            }
 //        }
+
+        ApexTrackingApplication.get_instance().checkUpdate(false,null);
+
     }
     public boolean checkAllPermission() {
 

+ 4 - 0
Apex Mobile/app/src/main/java/com/usai/apex/mainframe/ToolsFragment.java

@@ -284,6 +284,10 @@ public class ToolsFragment extends StaticModelistFragment
 					.show();
 
 
+		}
+		else if (type.equals("check_update"))
+		{
+			ApexTrackingApplication.get_instance().checkUpdate(true,"check update");
 		}
 		else if (title.equals("About"))
 		{

+ 35 - 0
Apex Mobile/app/src/main/java/com/usai/util/Network.java

@@ -60,6 +60,8 @@ import com.usai.apex.R;
 
 import android.content.Context;
 import android.content.SharedPreferences.Editor;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
@@ -120,6 +122,7 @@ public class Network
 	public static String		URL_PUSH						= "https://ra.apexshipping.com/main_new.php";
 	public static String		URL_LOG							= "https://ra.apexshipping.com/mobile_news.php";
 	public static String		URL_SEND_COMM_EMAIL				= "https://ra.apexshipping.com/main_new.php";
+	public static String		URL_CHECK_UPDATE				= "https://ra.apexshipping.com/main_new.php";
 
 
 //
@@ -1865,4 +1868,36 @@ public class Network
 
 	}
 
+	public static String checkUpdate(Context context) {
+
+		if (context == null) {
+			return null;
+		}
+		String  ver_name = null;
+		int ver_code = -1;
+		try {
+			// ---get the package info---
+			PackageManager pm = context.getPackageManager();
+			PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
+			ver_name = pi.versionName;
+			ver_code = pi.versionCode;
+
+		} catch (Exception e) {
+			Log.e("VersionInfo", "Exception", e);
+		}
+
+		if (ver_name == null || ver_name.length() <= 0) {
+			return null;
+		}
+
+//		Bundle params = new Bundle();
+//		params.putString("ver",ver_name);
+//
+//		String jsonStr = getJson(URL_CHECK_UPDATE,params);
+
+		String jsonStr = "{\"ver\":\"2.2.1.180519\",\"url\":\"http://192.168.0.130/Apex Mobile.apk\"}";
+
+		return jsonStr;
+	}
+
 }

BIN
Apex Mobile/app/src/main/res/drawable-hdpi/mode_check_update.png


BIN
Apex Mobile/app/src/main/res/drawable-ldpi/mode_check_update.png


BIN
Apex Mobile/app/src/main/res/drawable-mdpi/mode_check_update.png


BIN
Apex Mobile/app/src/main/res/drawable-xhdpi/mode_check_update.png


BIN
Apex Mobile/app/src/main/res/drawable-xxhdpi/mode_check_update.png


+ 6 - 0
Apex Mobile/app/src/main/res/raw/tools.json

@@ -30,6 +30,12 @@
                   "detail": "Clear your login account and password",
                   "icon": "mode_clear_login",
                   "type": "clear_login"
+                },
+                {
+                  "name": "Check Update",
+                  "detail": "check a new version for update",
+                  "icon": "mode_check_update",
+                  "type": "check_update"
                 },
                  {
                  "name": "About",