From dec84d107d05c596307c59fc41a0a4d65df58643 Mon Sep 17 00:00:00 2001
From: 陶汉栋 <2821744554@qq.com>
Date: Wed, 2 May 2018 17:37:17 +0800
Subject: [PATCH] no message
---
.idea/caches/build_file_checksums.ser | Bin 0 -> 590 bytes
.idea/codeStyles/Project.xml | 29 +++++++++++++++++++++++++++++
app/build.gradle | 13 +++++++++++--
app/release/express.apk | Bin 0 -> 3698711 bytes
app/release/output.json | 1 +
app/src/main/AndroidManifest.xml | 6 ++++--
app/src/main/java/com/shunzhi/expressscanner/AppConfig.java | 9 +++++----
app/src/main/java/com/shunzhi/expressscanner/AppContext.java | 1 -
app/src/main/java/com/shunzhi/expressscanner/api/MainApi.java | 3 +++
app/src/main/java/com/shunzhi/expressscanner/bean/Version.java | 14 ++++++++++++++
app/src/main/java/com/shunzhi/expressscanner/contract/MainContract.java | 2 ++
app/src/main/java/com/shunzhi/expressscanner/fragment/MainFragment.java | 14 ++++++++++++++
app/src/main/java/com/shunzhi/expressscanner/manager/CloseUtils.java | 33 +++++++++++++++++++++++++++++++++
app/src/main/java/com/shunzhi/expressscanner/manager/SystemHelper.java | 435 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/src/main/java/com/shunzhi/expressscanner/manager/UpdateManager.java | 374 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/src/main/java/com/shunzhi/expressscanner/present/MainPresenter.java | 15 ++++++++++-----
app/src/main/java/com/shunzhi/expressscanner/view/MyVersionDialog.java | 94 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/src/main/res/drawable-mdpi/logo.png | Bin 0 -> 1238 bytes
app/src/main/res/drawable-v24/ic_launcher_foreground.xml | 34 ----------------------------------
app/src/main/res/drawable-xhdpi/logo.png | Bin 0 -> 1746 bytes
app/src/main/res/drawable-xxhdpi/logo.png | Bin 0 -> 2412 bytes
app/src/main/res/drawable/shape_radius8_whit.xml | 7 +++++++
app/src/main/res/layout/fragment_main.xml | 12 ++++++++++--
app/src/main/res/layout/myversiondialog.xml | 180 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
app/src/main/res/layout/progress_dialog.xml | 28 ++++++++++++++++++++++++++++
app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml | 5 -----
app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 -----
app/src/main/res/mipmap-mdpi/logo.png | Bin 0 -> 1238 bytes
app/src/main/res/mipmap-xhdpi/logo.png | Bin 0 -> 1746 bytes
app/src/main/res/mipmap-xxhdpi/logo.png | Bin 0 -> 2412 bytes
app/src/main/res/values/colors.xml | 25 +++++++++++++++++++++++++
app/src/main/res/values/dimens.xml | 3 +++
app/src/main/res/values/strings.xml | 2 +-
app/src/main/res/values/styles.xml | 18 ++++++++++++++++++
build.gradle | 2 +-
expressscanner.jks | Bin 0 -> 2062 bytes
gradle/wrapper/gradle-wrapper.properties | 4 ++--
mvpsdk/build.gradle | 1 -
38 files changed, 1304 insertions(+), 65 deletions(-)
create mode 100644 .idea/caches/build_file_checksums.ser
create mode 100644 .idea/codeStyles/Project.xml
create mode 100644 app/release/express.apk
create mode 100644 app/release/output.json
create mode 100644 app/src/main/java/com/shunzhi/expressscanner/bean/Version.java
create mode 100644 app/src/main/java/com/shunzhi/expressscanner/manager/CloseUtils.java
create mode 100644 app/src/main/java/com/shunzhi/expressscanner/manager/SystemHelper.java
create mode 100644 app/src/main/java/com/shunzhi/expressscanner/manager/UpdateManager.java
create mode 100644 app/src/main/java/com/shunzhi/expressscanner/view/MyVersionDialog.java
create mode 100644 app/src/main/res/drawable-mdpi/logo.png
delete mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml
create mode 100644 app/src/main/res/drawable-xhdpi/logo.png
create mode 100644 app/src/main/res/drawable-xxhdpi/logo.png
create mode 100644 app/src/main/res/drawable/shape_radius8_whit.xml
create mode 100644 app/src/main/res/layout/myversiondialog.xml
create mode 100644 app/src/main/res/layout/progress_dialog.xml
delete mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
delete mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
create mode 100644 app/src/main/res/mipmap-mdpi/logo.png
create mode 100644 app/src/main/res/mipmap-xhdpi/logo.png
create mode 100644 app/src/main/res/mipmap-xxhdpi/logo.png
create mode 100644 expressscanner.jks
diff --git a/.idea/caches/build_file_checksums.ser b/.idea/caches/build_file_checksums.ser
new file mode 100644
index 0000000..8db90f2
Binary files /dev/null and b/.idea/caches/build_file_checksums.ser differ
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..30aa626
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index 78e0613..9f5e4a9 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,19 +1,28 @@
apply plugin: 'com.android.application'
android {
+ signingConfigs {
+ config {
+ keyAlias 'key0'
+ keyPassword '123456'
+ storeFile file('../expressscanner.jks')
+ storePassword '123456'
+ }
+ }
compileSdkVersion 26
defaultConfig {
applicationId "com.shunzhi.expressscanner"
minSdkVersion 16
targetSdkVersion 26
- versionCode 1
- versionName "1.0"
+ versionCode 101
+ versionName "1.0.1"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ signingConfig signingConfigs.config
}
}
}
diff --git a/app/release/express.apk b/app/release/express.apk
new file mode 100644
index 0000000..5138924
Binary files /dev/null and b/app/release/express.apk differ
diff --git a/app/release/output.json b/app/release/output.json
new file mode 100644
index 0000000..2bdc853
--- /dev/null
+++ b/app/release/output.json
@@ -0,0 +1 @@
+[{"outputType":{"type":"APK"},"apkInfo":{"type":"MAIN","splits":[],"versionCode":102,"versionName":"1.0.2","enabled":true,"outputFile":"app-release.apk","fullName":"release","baseName":"release"},"path":"app-release.apk","properties":{}}]
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 3b94079..0fa05cd 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -3,13 +3,15 @@
package="com.shunzhi.expressscanner">
+
+
UpdateIsReceive(@Query("ExpressNumber") String ExpressNumber,@Query("schoolId") String schoolId);
+ @GET("api/Common/AppVersion?appType=5")
+ Observable isUpdateVersion();
+
}
diff --git a/app/src/main/java/com/shunzhi/expressscanner/bean/Version.java b/app/src/main/java/com/shunzhi/expressscanner/bean/Version.java
new file mode 100644
index 0000000..a2b6691
--- /dev/null
+++ b/app/src/main/java/com/shunzhi/expressscanner/bean/Version.java
@@ -0,0 +1,14 @@
+package com.shunzhi.expressscanner.bean;
+
+import java.io.Serializable;
+
+/**
+ * Created by xf on 2015/9/23.
+ */
+public class Version implements Serializable {
+ public String verNo;
+ public String content;
+ public String inTime;
+
+}
+
diff --git a/app/src/main/java/com/shunzhi/expressscanner/contract/MainContract.java b/app/src/main/java/com/shunzhi/expressscanner/contract/MainContract.java
index 49ee722..e4cec2b 100644
--- a/app/src/main/java/com/shunzhi/expressscanner/contract/MainContract.java
+++ b/app/src/main/java/com/shunzhi/expressscanner/contract/MainContract.java
@@ -64,6 +64,8 @@ public interface MainContract {
void showSearchModel(List stringList);
void showUpdateIsReceive(boolean isUpdate);
+
+ void showUserInfo();
}
diff --git a/app/src/main/java/com/shunzhi/expressscanner/fragment/MainFragment.java b/app/src/main/java/com/shunzhi/expressscanner/fragment/MainFragment.java
index 088ea33..dab89da 100644
--- a/app/src/main/java/com/shunzhi/expressscanner/fragment/MainFragment.java
+++ b/app/src/main/java/com/shunzhi/expressscanner/fragment/MainFragment.java
@@ -34,9 +34,11 @@ import com.share.mvpsdk.utils.NetworkConnectionUtils;
import com.share.mvpsdk.utils.StringUtils;
import com.share.mvpsdk.utils.ToastUtils;
import com.shunzhi.expressscanner.AppConfig;
+import com.shunzhi.expressscanner.AppContext;
import com.shunzhi.expressscanner.R;
import com.shunzhi.expressscanner.bean.ExpressBean;
import com.shunzhi.expressscanner.contract.MainContract;
+import com.shunzhi.expressscanner.manager.UpdateManager;
import com.shunzhi.expressscanner.present.MainPresenter;
import com.smartdevice.aidl.ICallBack;
import com.smartdevice.aidl.IZKCService;
@@ -226,6 +228,18 @@ public class MainFragment extends BaseMVPCompatFragment 0) {
+ try {
+ for (Closeable c : closeable) {
+ if (c != null) c.close();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ return false;
+ }
+ }
+ return true;
+ }
+}
diff --git a/app/src/main/java/com/shunzhi/expressscanner/manager/SystemHelper.java b/app/src/main/java/com/shunzhi/expressscanner/manager/SystemHelper.java
new file mode 100644
index 0000000..7c8e76e
--- /dev/null
+++ b/app/src/main/java/com/shunzhi/expressscanner/manager/SystemHelper.java
@@ -0,0 +1,435 @@
+/**
+ * ClassName: MyApp.java
+ * created on 2013-1-24
+ * Copyrights 2013-1-24 hjgang All rights reserved.
+ * site: http://t.qq.com/hjgang2012
+ * email: hjgang@yahoo.cn
+ */
+package com.shunzhi.expressscanner.manager;
+
+import android.Manifest;
+import android.annotation.TargetApi;
+import android.app.Activity;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.Intent.ShortcutIconResource;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.database.Cursor;
+import android.net.ConnectivityManager;
+import android.net.NetworkInfo;
+import android.net.NetworkInfo.State;
+import android.net.Uri;
+import android.os.Build;
+import android.support.v4.app.ActivityCompat;
+import android.support.v4.content.FileProvider;
+import android.telephony.TelephonyManager;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.Window;
+import android.view.WindowManager;
+
+
+import com.shunzhi.expressscanner.R;
+
+import java.io.File;
+import java.sql.Timestamp;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import timber.log.Timber;
+
+
+/**
+ * 获取系统信息的工具类
+ *
+ * @author hjgang
+ */
+public class SystemHelper {
+ private SystemHelper() {
+ }
+
+ /**
+ * 创建本应用的桌面快捷方式
+ * 注意:需要添加权限<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>
+ *
+ * @param
+ */
+ public static void createShortcut(Context context, Class> clazz) {
+ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
+
+ //快捷方式的名称
+ shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, context.getString(R.string.app_name));
+ shortcut.putExtra("duplicate", false); //不允许重复创建
+
+ Intent localIntent2 = new Intent(context, clazz);
+ localIntent2.setAction(Intent.ACTION_MAIN);
+ localIntent2.addCategory(Intent.CATEGORY_LAUNCHER);
+
+ shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, localIntent2);//指定快捷方式要启动的Activity类型
+
+ //快捷方式的图标
+ ShortcutIconResource iconResource = ShortcutIconResource.fromContext(context, R.drawable.logo);
+ shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
+
+ context.sendBroadcast(shortcut);
+ }
+
+ /**
+ * 字符串转换成date
+ *
+ * @param time
+ * @return
+ */
+ public static Date getDateTime1(String time) {
+ Date newtime = null;
+ SimpleDateFormat sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ try {
+ if (time != null && !time.equals("0")) {
+ newtime = sdfDateFormat.parse(time);
+ }
+ } catch (Exception err) {
+
+ }
+ return newtime;
+ }
+
+ /**
+ * 将字符串转为 时间戳
+ *
+ * @param time
+ * @return
+ */
+ public static String getTimestamp(String time) {
+ Date newtime = null;
+ SimpleDateFormat sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ try {
+ if (time != null && !time.equals("0")) {
+ newtime = sdfDateFormat.parse(time);
+ }
+ } catch (Exception err) {
+
+ }
+ return newtime.getTime() + "";
+ }
+
+ /**
+ * 将时间戳转为 字符串
+ * yyyy-MM-dd HH:mm
+ */
+ public static String getTimeStr(String time) {
+
+ String newtime = null;
+ SimpleDateFormat sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
+ if (time != null && !time.equals("0")) {
+ newtime = sdfDateFormat.format(new Timestamp(Long.parseLong(time)));
+ }
+ return newtime;
+ }
+
+ /**
+ * 将时间戳转为 字符串
+ * yyyy-MM-dd
+ */
+ public static String getTimeStr3(String time) {
+ String newtime = null;
+ SimpleDateFormat sdfDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+ if (time != null && !time.equals("0")) {
+ newtime = sdfDateFormat.format(new Date(Long.parseLong(time) * 1000));
+ }
+ return newtime;
+ }
+
+ // 将字符串转为时间戳
+ public static String getTime(String time) {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日hh时mm分");
+ Date date = null;
+ if (time == null || "".equals(time) || "null".equals(time)) {
+ return "0";
+ }
+ if (time.contains("年")) {
+ int year = Integer.parseInt(time.substring(0, time.indexOf("年")));
+ if (year <= 1970) {
+ return "0";
+ }
+ }
+ try {
+ date = format.parse(time);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ return null;
+ }
+ return date.getTime() / 1000 + "";
+ }
+
+ // 将字符串转为时间戳
+ public static String getTime2(String time) {
+ SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日");
+ Date date = null;
+ if (time == null || "".equals(time) || "null".equals(time)) {
+ return "0";
+ }
+ int year = Integer.parseInt(time.substring(0, time.indexOf("年")));
+ if (year <= 1970) {
+ return "0";
+ }
+ try {
+ date = format.parse(time);
+ } catch (ParseException e) {
+ e.printStackTrace();
+ }
+ return date.getTime() / 1000 + "";
+ }
+
+ /**
+ * @param oldTime 较小的时间
+ * @param newTime 较大的时间 (如果为空 默认当前时间 ,表示和当前时间相比)
+ * @return -1 :同一天. 0:昨天 . 1 :至少是前天.
+ * @throws ParseException 转换异常
+ * @author LuoB.
+ */
+ public static int isYeaterday(Date oldTime, Date newTime) throws ParseException {
+ if (newTime == null) {
+ newTime = new Date();
+ }
+ //将下面的 理解成 yyyy-MM-dd 00:00:00 更好理解点
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
+ String todayStr = format.format(newTime);
+ Date today = format.parse(todayStr);
+ //昨天 86400000=24*60*60*1000 一天
+ if ((today.getTime() - oldTime.getTime()) > 0 && (today.getTime() - oldTime.getTime()) <= 86400000) {
+ return 0;
+ } else if ((today.getTime() - oldTime.getTime()) <= 0) { //至少是今天
+ return -1;
+ } else { //至少是前天
+ return 1;
+ }
+ }
+
+ /**
+ * 检查是否已经创建了桌面快捷方式
+ * 注意:需要添加权限<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>
+ *
+ * @param context
+ * @return
+ */
+ public static boolean hasShortCut(Context context) {
+ String url = "";
+ if (Build.VERSION.SDK_INT < 8) {
+ url = "content://com.android.launcher.settings/favorites?notify=true";
+ } else {
+ url = "content://com.android.launcher2.settings/favorites?notify=true";
+ }
+ ContentResolver resolver = context.getContentResolver();
+ Cursor cursor = resolver.query(Uri.parse(url), null, "title=?",
+ new String[]{context.getString(R.string.app_name)}, null);
+
+ if (cursor != null && cursor.moveToFirst()) {
+ cursor.close();
+ return true;
+ }
+
+ return false;
+ }
+
+ /**
+ * 获取当前机器的屏幕信息对象
+ * 另外:通过android.os.Build类可以获取当前系统的相关信息
+ *
+ * @param context
+ * @return
+ */
+ public static DisplayMetrics getScreenInfo(Context context) {
+ WindowManager windowManager = (WindowManager) context
+ .getSystemService(Context.WINDOW_SERVICE);
+ DisplayMetrics dm = new DisplayMetrics();
+ windowManager.getDefaultDisplay().getMetrics(dm);
+ // dm.widthPixels;//寬度
+ // dm.heightPixels; //高度
+ // dm.density; //密度
+ return dm;
+ }
+
+ public static int dip2px(Context context, double dipValue) {
+ final float scale = context.getResources().getDisplayMetrics().density;
+ return (int) (dipValue * scale + 0.5f);
+ }
+
+ public static int px2dip(Context context, double pxValue) {
+ final float scale = context.getResources().getDisplayMetrics().density;
+ return (int) (pxValue / scale + 0.5f);
+ }
+
+ /**
+ * 获取手机号
+ * 注意:需要添加权限<uses-permission
+ * android:name="android.permission.READ_PHONE_STATE"/>。另外很多手机不能获取到当前手机号
+ *
+ * @param context
+ * @return
+ */
+ public static String getMobileNumber(Context context) {
+ TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ if (ActivityCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE) != PackageManager.PERMISSION_GRANTED) {
+ // TODO: Consider calling
+ // ActivityCompat#requestPermissions
+ // here to request the missing permissions, and then overriding
+ // public void onRequestPermissionsResult(int requestCode, String[] permissions,
+ // int[] grantResults)
+ // to handle the case where the user grants the permission. See the documentation
+ // for ActivityCompat#requestPermissions for more details.
+ }
+ String deviceid = tm.getDeviceId();//获取智能设备唯一编号
+ String te1 = tm.getLine1Number();//获取本机号码
+ String imei = tm.getSimSerialNumber();//获得SIM卡的序号
+ String imsi = tm.getSubscriberId();//得到用户Id
+ return tm.getLine1Number();
+ }
+
+ /**
+ * 检测当前的网络连接是否可用
+ * 注意:需要添加权限<uses-permission
+ * android:name="android.permission.ACCESS_NETWORK_STATE"/>
+ *
+ * @param context
+ * @return
+ */
+ public static boolean isConnected(Context context) {
+ boolean flag = false;
+ try {
+ ConnectivityManager connManager = (ConnectivityManager) context
+ .getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (null != connManager) {
+ NetworkInfo info = connManager.getActiveNetworkInfo();
+ if (null != info && info.isAvailable()) {
+ flag = true;
+ }
+ }
+ } catch (Exception e) {
+ Timber.d(e + "");
+ }
+ return flag;
+ }
+
+ /**
+ * 检测当前网络连接的类型
+ * 注意:需要添加权限<uses-permission
+ * android:name="android.permission.ACCESS_NETWORK_STATE"/>
+ *
+ * @param context
+ * @return 返回0代表GPRS网络;返回1,代表WIFI网络;返回-1代表网络不可用
+ */
+ public static int getNetworkType(Context context) {
+ int code = -1;
+ try {
+ ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ if (null != connManager) {
+ State state = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
+ if (State.CONNECTED == state) {
+ code = ConnectivityManager.TYPE_WIFI;
+ } else {
+ state = connManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
+ if (State.CONNECTED == state) {
+ code = ConnectivityManager.TYPE_MOBILE;
+ }
+ }
+ }
+ } catch (Exception e) {
+ Timber.d(e + "");
+ }
+ return code;
+ }
+
+ /**
+ * 返回当前程序版本代码,如:1
+ *
+ * @param context
+ * @return 当前程序版本代码
+ */
+ public static int getAppVersionCode(Context context) {
+ int versionCode = -1;
+ try {
+ PackageManager pm = context.getApplicationContext().getPackageManager();
+ PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
+ versionCode = pi.versionCode;
+
+ } catch (Exception e) {
+ Timber.d("66666%s", e.toString() + "");
+ }
+ return versionCode;
+ }
+
+ /**
+ * 返回当前程序版本名,如:1.0.1
+ *
+ * @param context
+ * @return 当前程序版本名
+ */
+ public static String getAppVersionName(Context context) {
+ String versionName = "";
+ try {
+ PackageManager pm = context.getPackageManager();
+ PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
+ versionName = pi.versionName;
+
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return versionName;
+ }
+
+ /**
+ * 安装指定的APK文件,主要用于本应用程序的更新
+ *
+ * @param context
+ * @param apk apk文件的全路径名
+ */
+ public static void installAPK(Context context, String apk) {
+ Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ Uri data;
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
+ data = FileProvider.getUriForFile(context, "com.shunzhi.parent.fileprovider", new File(apk));
+// 给目标应用一个临时授权
+ intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
+ } else data = Uri.fromFile(new File(apk));
+ intent.setDataAndType(data, "application/vnd.android.package-archive");
+ context.startActivity(intent);
+ android.os.Process.killProcess(android.os.Process.myPid());
+ }
+
+ public static void remoteAPK(Context context) {
+ Uri packageURI = Uri.parse("package:net.shunzhi");
+ Intent uninstallIntent = new Intent(Intent.ACTION_DELETE, packageURI);
+ context.startActivity(uninstallIntent);
+ }
+
+// public static void setSystemBar(Context context, boolean on, int color) {
+// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
+// SystemHelper.setTranslucentStatus(context, on);
+// SystemBarTintManager mTintManager = new SystemBarTintManager((Activity) context);
+// mTintManager.setStatusBarTintEnabled(true);
+// //mTintManager.setNavigationBarTintEnabled(true);
+// mTintManager.setStatusBarTintResource(color);
+//
+// //SystemBarTintManager.SystemBarConfig config = mTintManager.getConfig();
+// //listViewDrawer.setPadding(0, config.getPixelInsetTop(true), 0, config.getPixelInsetBottom());
+// }
+// }
+
+ @TargetApi(19)
+ public static void setTranslucentStatus(Context context, boolean on) {
+ Window win = ((Activity) context).getWindow();
+ WindowManager.LayoutParams winParams = win.getAttributes();
+ final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
+ if (on) {
+ winParams.flags |= bits;
+ } else {
+ winParams.flags &= ~bits;
+ }
+ win.setAttributes(winParams);
+ }
+}
diff --git a/app/src/main/java/com/shunzhi/expressscanner/manager/UpdateManager.java b/app/src/main/java/com/shunzhi/expressscanner/manager/UpdateManager.java
new file mode 100644
index 0000000..52c2a96
--- /dev/null
+++ b/app/src/main/java/com/shunzhi/expressscanner/manager/UpdateManager.java
@@ -0,0 +1,374 @@
+package com.shunzhi.expressscanner.manager;
+
+import android.app.Dialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.DialogInterface.OnClickListener;
+import android.os.Environment;
+import android.os.Handler;
+import android.os.Message;
+import android.support.v7.app.AlertDialog;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ProgressBar;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.share.mvpsdk.RxManager;
+import com.share.mvpsdk.helper.RetrofitCreateHelper;
+import com.share.mvpsdk.helper.RxHelper;
+import com.share.mvpsdk.utils.ToastUtils;
+import com.shunzhi.expressscanner.AppConfig;
+import com.shunzhi.expressscanner.R;
+import com.shunzhi.expressscanner.api.MainApi;
+import com.shunzhi.expressscanner.bean.Version;
+import com.shunzhi.expressscanner.view.MyVersionDialog;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.HttpURLConnection;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.text.SimpleDateFormat;
+import java.util.HashMap;
+
+import io.reactivex.functions.Consumer;
+import timber.log.Timber;
+
+public class UpdateManager {
+
+ AlertDialog dialogShowCheckingDialog;
+ /**
+ * 是否正在检查更新
+ */
+ public boolean ischeckingForUpdate = false;
+ /* 下载中 */
+ private static final int DOWNLOAD = 1;
+ /* 下载结束 */
+ private static final int DOWNLOAD_FINISH = 2;
+ /**
+ * 是否人为打断检查更新状态
+ */
+ private boolean isChechingInterrupted = false;
+ /**
+ * 结束正在获取更新
+ */
+ /* 保存解析的XML信息 */
+ static HashMap mHashMap;
+ /* 下载保存路径 */
+ private String mSavePath;
+ /* 记录进度条数量 */
+ private int progress;
+ /* 是否取消更新 */
+ private static boolean cancelUpdate = false;
+
+ private static Context mContext;
+ /* 更新进度条 */
+ private ProgressBar mProgress;
+ private TextView mProgressText;
+ private Dialog mDownloadDialog;
+ double serviceCode = 1;
+ int versionCode = 1;
+
+ //mHandler
+//region
+ private Handler mHandler = new Handler() {
+ public void handleMessage(Message msg) {
+ switch (msg.what) {
+ // 正在下载
+ case DOWNLOAD:
+ // 设置进度条位置
+ mProgress.setProgress(progress);
+ mProgressText.setText(progress + "%");
+ break;
+ case DOWNLOAD_FINISH:
+ mDownloadDialog.dismiss();
+ File apkfile = new File(mSavePath, mHashMap.get("name"));
+ SystemHelper.installAPK(mContext, apkfile.toString());
+ break;
+ default:
+ break;
+ }
+ }
+ };
+
+ //endregion
+ private UpdateManager() {
+ mHashMap = new HashMap();
+ mHashMap.put("url", AppConfig.url_apk);
+ mHashMap.put("name", "XSTApp.apk");
+
+ }
+
+ public UpdateManager(Context context) {
+ this.mContext = null;
+ this.mContext = context;
+ //获取更新版本和url
+ mHashMap = new HashMap();
+ mHashMap.put("url", AppConfig.url_apk);
+ mHashMap.put("name", "XSTApp.apk");
+
+ }
+
+ /**
+ * 检查软件是否有更新版本
+ *
+ * @return
+ */
+ String date = "";
+
+ /**
+ * @param shouldInterruptDialogShow 是否显示打断检查更新的对话框
+ */
+ RxManager rxManager=new RxManager();
+ public void isUpdate(final boolean shouldInterruptDialogShow) {
+ date = new SimpleDateFormat("yyyyMMddHHmmss").format(new java.util.Date());
+ // 获取当前软件版本
+ if (!ischeckingForUpdate) {
+ isChechingInterrupted = false;
+ if (shouldInterruptDialogShow) showCheckingDialog(mContext);
+ ischeckingForUpdate = true;
+ versionCode = SystemHelper.getAppVersionCode(mContext);
+ rxManager.register( RetrofitCreateHelper.getInstance().createApi(MainApi.class,AppConfig.BASE_URL)
+ .isUpdateVersion().compose(RxHelper.rxSchedulerHelper()).subscribe(new Consumer() {
+ @Override
+ public void accept(JsonObject jsonObject) throws Exception {
+ try {
+ Gson gson=new Gson();
+ Version version=gson.fromJson(jsonObject.get("data").getAsJsonObject().toString(),Version.class);
+ serviceCode = Double.parseDouble(version.verNo);
+ double currentVersion = serviceCode / 100;
+ Timber.d("66666%s","currentVersion="+currentVersion+"serviceCode="+serviceCode+"versionCode="+versionCode);
+ if ((serviceCode > versionCode) && ischeckingForUpdate && !isChechingInterrupted) {
+ showNoticeDialog(currentVersion, version.content, isChechingInterrupted);
+ } else if (!(serviceCode > versionCode) && !isChechingInterrupted) {
+ Toast.makeText(mContext, "已经是最新版本啦!", Toast.LENGTH_SHORT).show();
+ mContext = null;
+ }
+
+ }catch (Exception e){
+ e.printStackTrace();
+ }finally {
+ ischeckingForUpdate = false;
+ }
+ }
+ }, new Consumer() {
+ @Override
+ public void accept(Throwable throwable) throws Exception {
+ ToastUtils.showToast("更新失败:"+throwable.toString());
+ }
+ }));
+
+// Timber.d("sign:%s", Utils.getSignStr());
+ /*Ion.with(mContext)
+ .load(Constants.url_version)
+ .setHeader("sign", Utils.getSignStr())
+ .setTimeout(5000)
+ .asJsonObject()
+ .setCallback(new FutureCallback() {
+ @Override
+ public void onCompleted(Exception e, JsonObject result) {
+ try {
+ Timber.i("exception : %s",e);
+ Timber.i("result : %s", result);
+ if (dialogShowCheckingDialog != null)
+ dialogShowCheckingDialog.dismiss();
+ Gson gson = new Gson();
+ String s = gson.toJson(result.getAsJsonObject("data"));
+ Version serverVersion = gson.fromJson(s, new TypeToken() {
+ }.getType());
+ serviceCode = Double.parseDouble(serverVersion.verNo);
+ double currentVersion = serviceCode / 100;
+ if ((serviceCode > versionCode) && ischeckingForUpdate && !isChechingInterrupted) {
+ showNoticeDialog(currentVersion, serverVersion.content, isChechingInterrupted);
+ } else if (!(serviceCode > versionCode) && shouldInterruptDialogShow && !isChechingInterrupted) {
+ Toast.makeText(mContext, "已经是最新版本啦!", Toast.LENGTH_SHORT).show();
+ mContext = null;
+ }
+ } catch (Exception ee) {
+ ee.printStackTrace();
+ if (shouldInterruptDialogShow)
+ Toast.makeText(mContext, "版本检测失败", Toast.LENGTH_LONG).show();
+ mContext = null;
+ } finally {
+ ischeckingForUpdate = false;
+ }
+ }
+ });*/
+ }
+ }
+
+
+ public UpdateManager setContext(Context ctx) {
+ mContext = ctx;
+ return this;
+ }
+
+ public static UpdateManager getInstance() {
+
+ return SingletonHolder.sInstance;
+ }
+
+ private static class SingletonHolder {
+ private static final UpdateManager sInstance = new UpdateManager();
+ }
+
+ /**
+ * 显示软件更新对话框
+ */
+ public void showNoticeDialog(double serviceCode, String content, Boolean isInterrupted) {
+ final MyVersionDialog dialog = new MyVersionDialog(mContext, "V" + serviceCode, "10.1M",
+ content, R.style.dialog, new MyVersionDialog.OnCustomDialogListener() {
+ @Override
+ public void clickSure() {
+ showDownloadDialog();
+ }
+
+ @Override
+ public void clickCancel() {
+ mContext = null;
+ }
+ });
+ dialog.setCanceledOnTouchOutside(false);
+ if (!dialog.isShowing())
+ dialog.show();
+ ischeckingForUpdate = false;
+ }
+
+ private void showCheckingDialog(Context ctx) {
+ dialogShowCheckingDialog = styleDialogBuilder(ctx)
+ .setMessage("正在检查更新...")
+ .setTitle("提示")
+ .setNegativeButton("取消", new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ isChechingInterrupted = true;
+ mContext = null;
+ dialog.dismiss();
+ }
+ }).create();
+ dialogShowCheckingDialog.setCanceledOnTouchOutside(false);
+ if (!dialogShowCheckingDialog.isShowing()) {
+ dialogShowCheckingDialog.show();
+ }
+ }
+
+ /**
+ * 显示软件下载对话框
+ */
+ private void showDownloadDialog() {
+ // 构造软件下载对话框
+ AlertDialog.Builder builder = styleDialogBuilder(mContext);
+ builder.setTitle("更新中");
+ // 给下载对话框增加进度条
+ final LayoutInflater inflater = LayoutInflater.from(mContext);
+ View v = inflater.inflate(R.layout.progress_dialog, null);
+ mProgress = (ProgressBar) v.findViewById(R.id.pbar);
+ mProgressText = (TextView) v.findViewById(R.id.txt_wait);
+ builder.setView(v);
+ // 取消更新
+ builder.setNegativeButton("取消", new OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ // 设置取消状态
+ File APKfile = new File(mSavePath);
+ //FileUtil.deleteFile(APKfile, APKfile + "/" + mHashMap.get("name"));
+ cancelUpdate = true;
+ }
+ });
+ mDownloadDialog = builder.create();
+ mDownloadDialog.setCanceledOnTouchOutside(false);
+ mDownloadDialog.show();
+ // 现在文件
+ downloadApk();
+ }
+ public AlertDialog.Builder styleDialogBuilder(Context context) {
+ return new AlertDialog.Builder(context, R.style.AlertDialogCustom);
+ }
+ /**
+ * 下载apk文件
+ */
+ private void downloadApk() {
+ // 启动新线程下载软件
+ cancelUpdate = false;
+ downloadApkThread downloadThread = new downloadApkThread();
+ downloadThread.start();
+ }
+
+ /**
+ * 下载文件线程
+ *
+ * @author coolszy
+ * @date 2012-4-26
+ * @blog http://blog.92coding.com
+ */
+ private class downloadApkThread extends Thread {
+ HttpURLConnection conn = null;
+ InputStream is = null;
+ FileOutputStream fos = null;
+
+ @Override
+ public void run() {
+ //cancelUpdate = false;
+ try {
+ // 判断SD卡是否存在,并且是否具有读写权限
+ if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {
+ // 获得存储卡的路径
+ String sdpath = Environment.getExternalStorageDirectory() + "/";
+ mSavePath = sdpath + "download";
+ URL url = new URL(mHashMap.get("url"));
+ // 创建连接
+ conn = (HttpURLConnection) url.openConnection();
+ conn.connect();
+ // 获取文件大小
+ int length = conn.getContentLength();//服务端要设置 content length属性
+ // 创建输入流
+ is = conn.getInputStream();
+
+ File file = new File(mSavePath);
+ // 判断文件目录是否存在
+ if (!file.exists()) {
+ if (!file.mkdir()) file.mkdirs();//创建文件失败,则创建文件夹
+ }
+ File apkFile = new File(mSavePath, mHashMap.get("name"));
+ fos = new FileOutputStream(apkFile);
+ int count = 0;
+ // 缓存
+ byte buf[] = new byte[1024];
+ // 写入到文件中
+ while (!cancelUpdate) {
+ int numread = is.read(buf);
+ count += numread;
+ progress = (int) (((float) count / length) * 100);// 计算进度条位置
+ mHandler.sendEmptyMessage(DOWNLOAD);// 更新进度
+ if (numread <= 0) {
+ // 下载完成
+ mHandler.sendEmptyMessage(DOWNLOAD_FINISH);
+ break;
+ }
+ // 写入文件
+ fos.write(buf, 0, numread);
+ } // 点击取消就停止下载.
+
+ }
+ } catch (MalformedURLException e) {
+ Timber.d("MalformedURLException=%s"+e + "");
+ e.printStackTrace();
+ } catch (IOException e) {
+ Timber.d("MalformedURLException=%s"+e + "");
+ e.printStackTrace();
+ } finally {
+ conn.disconnect();
+ CloseUtils.closeQuietly(fos, is);
+ }
+ // 取消下载对话框显示
+ Thread.currentThread().interrupt();
+ rxManager.unSubscribe();
+ }
+ }
+}
diff --git a/app/src/main/java/com/shunzhi/expressscanner/present/MainPresenter.java b/app/src/main/java/com/shunzhi/expressscanner/present/MainPresenter.java
index c1bd071..f438c78 100644
--- a/app/src/main/java/com/shunzhi/expressscanner/present/MainPresenter.java
+++ b/app/src/main/java/com/shunzhi/expressscanner/present/MainPresenter.java
@@ -5,11 +5,14 @@ import android.util.Log;
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.share.mvpsdk.RxManager;
+import com.share.mvpsdk.helper.RetrofitCreateHelper;
import com.share.mvpsdk.utils.OkHttpExceptionUtil;
import com.share.mvpsdk.utils.ToastUtils;
import com.shunzhi.expressscanner.AppConfig;
+import com.shunzhi.expressscanner.AppContext;
import com.shunzhi.expressscanner.bean.ExpressBean;
import com.shunzhi.expressscanner.contract.MainContract;
+import com.shunzhi.expressscanner.manager.UpdateManager;
import com.shunzhi.expressscanner.model.MainModel;
import org.json.JSONObject;
@@ -44,6 +47,7 @@ public class MainPresenter extends MainContract.MainPresenter {
public void accept(JsonObject jsonObject) throws Exception {
String access_token = jsonObject.get("access_token").getAsString();
AppConfig.getAppConfig().set(AppConfig.ACCESS_TOKEN, access_token);
+ RetrofitCreateHelper.getInstance().setAuthorization(access_token);
getCurrentInfo();
}
}, new Consumer() {
@@ -71,6 +75,7 @@ public class MainPresenter extends MainContract.MainPresenter {
if (teachClass.size() > 0) {
JsonObject jsonObject1 = teachClass.get(0).getAsJsonObject();
AppConfig.getAppConfig().set(AppConfig.SCHOOL_ID, jsonObject1.get("schoolId").getAsString());
+ mIView.showUserInfo();
}
}
}
@@ -90,6 +95,7 @@ public class MainPresenter extends MainContract.MainPresenter {
mRxManager.register(mIModel.getExpressInfo(expressCode, scholId).subscribe(new Consumer() {
@Override
public void accept(JsonObject jsonObject) throws Exception {
+ Log.d("55555","getExpressInfo="+jsonObject.toString());
if (jsonObject.get("status").getAsInt() == 1) {
JsonArray jsonArray = jsonObject.getAsJsonArray("data");
ExpressBean expressBean = new ExpressBean();
@@ -104,12 +110,11 @@ public class MainPresenter extends MainContract.MainPresenter {
}
mIView.showExpressInfo(expressBean);
}
- Log.d("55555", "getExpressInfo=" + jsonObject.toString());
}
}, new Consumer() {
@Override
public void accept(Throwable throwable) throws Exception {
- Log.d("55555", "getExpressInfo=" + throwable.toString());
+ ToastUtils.showToast(throwable.toString());
}
}));
@@ -134,7 +139,7 @@ public class MainPresenter extends MainContract.MainPresenter {
}, new Consumer() {
@Override
public void accept(Throwable throwable) throws Exception {
-
+ ToastUtils.showToast(throwable.toString());
}
}));
}
@@ -156,6 +161,7 @@ public class MainPresenter extends MainContract.MainPresenter {
}, new Consumer() {
@Override
public void accept(Throwable throwable) throws Exception {
+ ToastUtils.showToast(throwable.toString());
// Log.d("55555","upExpressInfo="+throwable.toString());
}
}));
@@ -167,7 +173,6 @@ public class MainPresenter extends MainContract.MainPresenter {
@Override
public void accept(JsonObject jsonObject) throws Exception {
try {
- Log.d("55555","SearchExpressPhone="+jsonObject.toString());
if (jsonObject.get("status").getAsInt() == 1) {
List list = new ArrayList<>();
JsonArray data = jsonObject.getAsJsonArray("data");
@@ -184,7 +189,7 @@ public class MainPresenter extends MainContract.MainPresenter {
}, new Consumer() {
@Override
public void accept(Throwable throwable) throws Exception {
- Log.d("55555","SearchExpressPhone="+throwable.toString());
+ ToastUtils.showToast(throwable.toString());
}
}));
}
diff --git a/app/src/main/java/com/shunzhi/expressscanner/view/MyVersionDialog.java b/app/src/main/java/com/shunzhi/expressscanner/view/MyVersionDialog.java
new file mode 100644
index 0000000..992ab2f
--- /dev/null
+++ b/app/src/main/java/com/shunzhi/expressscanner/view/MyVersionDialog.java
@@ -0,0 +1,94 @@
+package com.shunzhi.expressscanner.view;
+import android.app.Dialog;
+import android.content.Context;
+import android.content.res.Resources;
+import android.os.Bundle;
+import android.text.method.ScrollingMovementMethod;
+import android.util.DisplayMetrics;
+import android.view.Gravity;
+import android.view.View;
+import android.view.Window;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.shunzhi.expressscanner.R;
+
+
+/**
+ * 自定义dialog
+ * @author Mr.Xu
+ *
+ */
+public class MyVersionDialog extends Dialog {
+ //定义回调事件,用于dialog的点击事件
+ public interface OnCustomDialogListener{
+ public void clickSure();
+ public void clickCancel();
+ }
+
+ private OnCustomDialogListener customDialogListener;
+ String version = "",size="",content ="";
+ public MyVersionDialog(Context context, String pVerion, String pSize, String pContent, int style, OnCustomDialogListener customDialogListener) {
+ super(context, style);
+ this.customDialogListener = customDialogListener;
+ version = pVerion;
+ size = pSize;
+ content = pContent;
+ Window window = getWindow();
+ WindowManager.LayoutParams params = window.getAttributes();
+ //set width,height by density and gravity
+ float density = getDensity(context);
+ params.width = (int) (300*density);
+ params.height = (int) (90*density);
+ params.gravity = Gravity.CENTER;
+
+
+ //WindowManager.LayoutParams p = getWindow().getAttributes(); //获取对话框当前的参数值
+ //Display d = window.getDefaultDisplay(); //为获取屏幕宽、高
+ //p.height = (int) (d.getHeight() * 0.6); //高度设置为屏幕的0.6
+ //p.width = (int) (d.getWidth() * 0.95); //宽度设置为屏幕的0.95
+
+ window.setAttributes(params);
+
+ }
+ private float getDensity(Context context) {
+ Resources resources = context.getResources();
+ DisplayMetrics dm = resources.getDisplayMetrics();
+ return dm.density;
+ }
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.myversiondialog);
+ Button clickBtn = (Button) findViewById(R.id.btnSure);
+ clickBtn.setOnClickListener(clickListener);
+ Button clearBtn = (Button) findViewById(R.id.btnCancel);
+ clearBtn.setOnClickListener(clearListener);
+
+ TextView txtVersionNum = (TextView) findViewById(R.id.txtVersionNum);
+ txtVersionNum.setText(version);
+
+ TextView txtSizeNum = (TextView) findViewById(R.id.txtSizeNum);
+ txtSizeNum.setText(size);
+
+ TextView txtContent = (TextView) findViewById(R.id.txtContent);
+ txtContent.setText(content);
+ txtContent.setMovementMethod(ScrollingMovementMethod.getInstance()) ;
+ }
+
+ private View.OnClickListener clickListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ customDialogListener.clickSure();
+ MyVersionDialog.this.dismiss();
+ }
+ };
+ private View.OnClickListener clearListener = new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ customDialogListener.clickCancel();
+ MyVersionDialog.this.dismiss();
+ }
+ };
+}
diff --git a/app/src/main/res/drawable-mdpi/logo.png b/app/src/main/res/drawable-mdpi/logo.png
new file mode 100644
index 0000000..68ceb61
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/logo.png differ
diff --git a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml b/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
deleted file mode 100644
index c7bd21d..0000000
--- a/app/src/main/res/drawable-v24/ic_launcher_foreground.xml
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/app/src/main/res/drawable-xhdpi/logo.png b/app/src/main/res/drawable-xhdpi/logo.png
new file mode 100644
index 0000000..bf0832f
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/logo.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/logo.png b/app/src/main/res/drawable-xxhdpi/logo.png
new file mode 100644
index 0000000..f24f9de
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/logo.png differ
diff --git a/app/src/main/res/drawable/shape_radius8_whit.xml b/app/src/main/res/drawable/shape_radius8_whit.xml
new file mode 100644
index 0000000..f84a0a8
--- /dev/null
+++ b/app/src/main/res/drawable/shape_radius8_whit.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_main.xml b/app/src/main/res/layout/fragment_main.xml
index 63535ee..03f4a58 100644
--- a/app/src/main/res/layout/fragment_main.xml
+++ b/app/src/main/res/layout/fragment_main.xml
@@ -10,7 +10,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
- android:layout_marginBottom="@dimen/dp_60"
+ android:layout_marginBottom="20dp"
android:orientation="vertical">
+
+
+
diff --git a/app/src/main/res/layout/myversiondialog.xml b/app/src/main/res/layout/myversiondialog.xml
new file mode 100644
index 0000000..63818dc
--- /dev/null
+++ b/app/src/main/res/layout/myversiondialog.xml
@@ -0,0 +1,180 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/progress_dialog.xml b/app/src/main/res/layout/progress_dialog.xml
new file mode 100644
index 0000000..276523a
--- /dev/null
+++ b/app/src/main/res/layout/progress_dialog.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
deleted file mode 100644
index bbd3e02..0000000
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
deleted file mode 100644
index bbd3e02..0000000
--- a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-mdpi/logo.png b/app/src/main/res/mipmap-mdpi/logo.png
new file mode 100644
index 0000000..68ceb61
Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/logo.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/logo.png b/app/src/main/res/mipmap-xhdpi/logo.png
new file mode 100644
index 0000000..bf0832f
Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/logo.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/logo.png b/app/src/main/res/mipmap-xxhdpi/logo.png
new file mode 100644
index 0000000..f24f9de
Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/logo.png differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 3ab3e9c..725bff8 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -3,4 +3,29 @@
#3F51B5
#303F9F
#FF4081
+
+ #494947
+ #B8B8B9
+ #F0EFF5
+
+ #FC5B6A
+
+ #2956FE
+ #00CB87
+ #6d9bff
+ #ACC9FC
+ #6d9bff
+ #F0EFF5
+ #494947
+ #ABC9FF
+ #1BE2E5
+ #ACD1FB
+ #757575
+ #5FB762
+ #00000000
+ #60b3f6
+ #2b71c4
+ #80bebebe
+
+ #00000000
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 59a0b0c..039328a 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -1,3 +1,6 @@
16dp
+ 8dp
+ 18dp
+ 14dp
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 2f72903..01a7055 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,5 +1,5 @@
- ExpressScanner
+ 快递管理系统
Hello blank fragment
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 545b9c6..f00680f 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -17,4 +17,22 @@
+
+
+
diff --git a/build.gradle b/build.gradle
index fd51344..60eebaf 100644
--- a/build.gradle
+++ b/build.gradle
@@ -7,7 +7,7 @@ buildscript {
jcenter()
}
dependencies {
- classpath 'com.android.tools.build:gradle:3.0.1'
+ classpath 'com.android.tools.build:gradle:3.1.2'
// NOTE: Do not place your application dependencies here; they belong
diff --git a/expressscanner.jks b/expressscanner.jks
new file mode 100644
index 0000000..877f151
Binary files /dev/null and b/expressscanner.jks differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index ef8fabf..df885c3 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,6 +1,6 @@
-#Tue Apr 24 08:15:31 CST 2018
+#Fri Apr 27 16:52:24 CST 2018
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
diff --git a/mvpsdk/build.gradle b/mvpsdk/build.gradle
index 8a1278c..b9ee614 100644
--- a/mvpsdk/build.gradle
+++ b/mvpsdk/build.gradle
@@ -2,7 +2,6 @@ apply plugin: 'com.android.library'
android {
compileSdkVersion rootProject.ext.compileSdkVersion
- buildToolsVersion rootProject.ext.buildToolsVersion
defaultConfig {
--
libgit2 0.21.0