From 64aae388b8c21695c05b02f6423678510be935ed Mon Sep 17 00:00:00 2001
From: Administrator <981964879@qq.com>
Date: Fri, 12 Jun 2020 11:15:52 +0800
Subject: [PATCH] =?UTF-8?q?update:2020.06.12=20fix:=E6=9B=B4=E6=8D=A2?=
=?UTF-8?q?=E5=9B=BE=E6=A0=87=20add:=E5=A2=9E=E5=8A=A0=E8=BF=9E=E6=8E=A5?=
=?UTF-8?q?=E4=B8=8Awifi=E4=B9=8B=E5=90=8E=E5=90=AF=E5=8A=A8=E7=AE=A1?=
=?UTF-8?q?=E6=8E=A7=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 10 +-
app/src/main/AndroidManifest.xml | 2 +
.../com/mjsheng/myappstore/MyApplication.java | 43 ++-
.../myappstore/activity/MainActivity.java | 166 ++++++++++--
.../myappstore/network/HTTPInterface.java | 11 +-
.../myappstore/receiver/BootReceiver.java | 2 +
.../myappstore/receiver/MyJPushReceiver.java | 3 +
.../myappstore/server/GuardService.java | 128 +++++++--
.../myappstore/server/InitJpushServer.java | 1 +
.../mjsheng/myappstore/utils/Configure.java | 2 +
.../com/mjsheng/myappstore/utils/Utils.java | 12 +-
.../main/res/layout-land/activity_main.xml | 250 +++++++++++++++---
.../main/res/layout-port/activity_main.xml | 242 +++++++++++++++--
app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 4753 -> 5094 bytes
app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 4753 -> 5094 bytes
app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 4753 -> 5094 bytes
.../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 4753 -> 5094 bytes
.../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 4753 -> 5094 bytes
18 files changed, 752 insertions(+), 120 deletions(-)
diff --git a/app/build.gradle b/app/build.gradle
index 2c1313a..23a4b0e 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -15,10 +15,10 @@ android {
minSdkVersion 20
targetSdkVersion 29
- versionCode 142
- versionName "2.9.9"//测试jiaoguanyi.cn
-// versionCode 128
-// versionName "2.0.0.8"// 正式jiaoguanyi.com 双数正式 单数测试
+ versionCode 145
+ versionName "3.0.2"//测试jiaoguanyi.cn
+// versionCode 129
+// versionName "2.0.0.9"// 正式jiaoguanyi.com 双数正式 单数测试
multiDexEnabled true
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
@@ -160,7 +160,7 @@ dependencies {
implementation 'com.arialyy.aria:core:3.8.5'
annotationProcessor 'com.arialyy.aria:compiler:3.8.5'
- implementation 'com.github.tianma8023:NetDetector:v0.2.0'
+// implementation 'com.github.tianma8023:NetDetector:v0.2.0'
implementation "org.java-websocket:Java-WebSocket:1.4.1"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 77e31bf..e567d07 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -12,6 +12,8 @@
+
+
= Build.VERSION_CODES.M) {
+
+ PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
+
+ boolean hasIgnored = powerManager.isIgnoringBatteryOptimizations(context.getPackageName());
+ // 判断当前APP是否有加入电池优化的白名单,如果没有,弹出加入电池优化的白名单的设置对话框。
+ if (!hasIgnored) {
+ Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
+ intent.setData(Uri.parse("package:" + context.getPackageName()));
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ startActivity(intent);
+ }
+ }
}
private receiver receiver;
@@ -181,6 +207,7 @@ public class MyApplication extends MultiDexApplication {
//可能会多次触发,1分钟之内不执行
//application中启动服务,startcommand执行会两次
startService(new Intent(context, InitJpushServer.class));
+ startService(new Intent(context, StepService.class));
startService(new Intent(context, GuardService.class));
time1 = time2;
Log.e("fht", "onReceive");
@@ -192,6 +219,8 @@ public class MyApplication extends MultiDexApplication {
}
}
+
+
public void onTagOperatorResult(JPushMessage jPushMessage) {
if (jPushMessage == null) {
return;
@@ -570,7 +599,7 @@ public class MyApplication extends MultiDexApplication {
result = result + "," + store;
}
Settings.System.putString(context.getContentResolver(), "qch_app_forbid", result);
- Log.e("mjsheng", "qch_app_forbid :"+result);
+ Log.e("mjsheng", "qch_app_forbid :" + result);
} else {
Log.e("mjsheng", "writeAppPackageList is null:");
Settings.System.putString(context.getContentResolver(), "qch_app_forbid", appstore + "," + store);
@@ -623,12 +652,6 @@ public class MyApplication extends MultiDexApplication {
//
// }
- @Override
- public void onTerminate() {
- super.onTerminate();
- // 取消BroadcastReceiver注册
- NetStateChangeReceiver.unregisterReceiver(this);
- }
// static List fileList = new ArrayList<>();
//
diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
index c872e94..3667387 100644
--- a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
@@ -1,5 +1,6 @@
package com.mjsheng.myappstore.activity;
+import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.ContextWrapper;
@@ -11,6 +12,7 @@ import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.graphics.Bitmap;
+import android.net.Uri;
import android.os.BatteryManager;
import android.os.Build;
import android.os.Bundle;
@@ -18,12 +20,17 @@ import android.os.Environment;
import android.os.Handler;
import android.os.Message;
import android.os.PersistableBundle;
+import android.os.PowerManager;
+import android.os.SystemClock;
import android.provider.Settings;
import android.support.v4.content.LocalBroadcastManager;
import android.support.v7.app.AppCompatActivity;
+import android.text.Layout;
import android.text.TextUtils;
import android.util.Log;
+import android.view.View;
import android.widget.ImageView;
+import android.widget.RelativeLayout;
import android.widget.TextView;
import com.alibaba.fastjson.JSON;
@@ -54,6 +61,7 @@ import com.mjsheng.myappstore.bean.JsonCallback;
import com.mjsheng.myappstore.bean.LzyResponse;
import com.mjsheng.myappstore.bean.NetAndLaunchBean;
import com.mjsheng.myappstore.bean.NetAndLaunchData;
+import com.mjsheng.myappstore.bean.StudentsInfo;
import com.mjsheng.myappstore.bean.UploadAppInfo;
import com.mjsheng.myappstore.bean.UserInfo;
import com.mjsheng.myappstore.comm.CommonDatas;
@@ -83,8 +91,6 @@ import com.mjsheng.myappstore.utils.update.NotificationDownloadCreator;
import com.mjsheng.myappstore.utils.update.OkhttpCheckWorker;
import com.mjsheng.myappstore.utils.update.ToastCallback;
import com.mjsheng.myappstore.utils.update.ToastTool;
-import com.tianma.netdetector.lib.NetStateChangeObserver;
-import com.tianma.netdetector.lib.NetworkType;
import org.json.JSONObject;
import org.lzh.framework.updatepluginlib.UpdateBuilder;
@@ -122,7 +128,7 @@ import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_SET;
import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.TagAliasBean;
import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.sequence;
-public class MainActivity extends AppCompatActivity implements NetStateChangeObserver {
+public class MainActivity extends AppCompatActivity {
private ToastCallback callback;
private long mPreClickTime;
@@ -132,8 +138,10 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
private DownloadManager downloadManager;
private ImageView imageView;
private TextView tv_devsn, tv_devmac, tv_version;
+ private TextView tv_class, tv_number, tv_name;
private int DeviceInfo;
-
+ private RelativeLayout checkupdate;
+ private ImageView back;
//jiguang
public static boolean isForeground = false;
//for receive customer msg from jpush server
@@ -287,6 +295,7 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
// }
requestPermission();
+ acquireWakeLock();
registerMessageReceiver(); // used for receive msg
// HTTPInterface.checkDevicesInfo(handler);
startService(new Intent(MainActivity.this, MyDownloadService.class));
@@ -353,15 +362,49 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
}
private void initView() {
+ checkupdate = findViewById(R.id.checkupdate);
+ checkupdate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ continuousClick(COUNTS, DURATION);
+ }
+ });
imageView = findViewById(R.id.imageView);
tv_devsn = findViewById(R.id.tv_devsn);
- tv_devsn.setText("设备SN\t\t" + Utils.getSerial());
+ tv_devsn.setText(Utils.getSerial());
tv_devmac = findViewById(R.id.tv_devmac);
- tv_devmac.setText("MAC地址\t\t" + com.blankj.utilcode.util.DeviceUtils.getMacAddress());
+ tv_devmac.setText(com.blankj.utilcode.util.DeviceUtils.getMacAddress());
tv_version = findViewById(R.id.version);
- tv_version.setText("版本:" + BuildConfig.VERSION_NAME);
+ tv_version.setText(BuildConfig.VERSION_NAME);
+ tv_class = findViewById(R.id.tv_class);
+ tv_number = findViewById(R.id.tv_number);
+ tv_name = findViewById(R.id.tv_name);
+ back = findViewById(R.id.back);
+ back.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ lazyExit();
+ }
+ });
}
+ final static int COUNTS = 5;// 点击次数
+ final static long DURATION = 1000;// 规定有效时间
+ long[] mHits = new long[COUNTS];
+
+ private void continuousClick(int count, long time) {
+ //每次点击时,数组向前移动一位
+ System.arraycopy(mHits, 1, mHits, 0, mHits.length - 1);
+ //为数组最后一位赋值
+ mHits[mHits.length - 1] = SystemClock.uptimeMillis();
+ if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
+ mHits = new long[COUNTS];//重新初始化数组
+ ToastUtil.show("正在检查更新");
+ HTTPInterface.checkUpdate(mHandler, BuildConfig.APPLICATION_ID);
+ }
+ }
+
+
private void initData() {
Log.e("mjhsneg", "gagagag--------------------------" + Utils.getSerial());
getLockedState();
@@ -389,8 +432,8 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
}
private void setImageAndText(ImageView imageView, String text) {
- Bitmap bitmap = Utils.createQRImage(Utils.getSn(), 250, 250);
- imageView.setImageBitmap(bitmap);
+// Bitmap bitmap = Utils.createQRImage(Utils.getSn(), 250, 250);
+// imageView.setImageBitmap(bitmap);
}
@@ -465,6 +508,37 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
}
+ private PowerManager.WakeLock wakeLock = null;
+ private static final String mWakeLockName = "BackupService";
+
+ /**
+ * 获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行
+ */
+ private synchronized void acquireWakeLock() {
+ if (null == wakeLock) {
+ PowerManager pm = (PowerManager) this.getSystemService(Context.POWER_SERVICE);
+ wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK
+ | PowerManager.ON_AFTER_RELEASE, mWakeLockName);
+ if (null != wakeLock) {
+ Log.e("fht", "acquireWakeLock!");
+ wakeLock.acquire();
+ }
+ }
+ }
+
+
+ /**
+ * 释放设备电源锁
+ */
+ private synchronized void releaseWakeLock() {
+ if (null != wakeLock) {
+ Log.e("fht", "releaseWakeLock!");
+ wakeLock.release();
+ wakeLock = null;
+ }
+ }
+
+
private boolean locked = false;
public void getLockedState() {
@@ -562,6 +636,33 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
break;
case -200:
Log.e("fht", "no update");
+ break;
+ case 2:
+ StudentsInfo info = com.alibaba.fastjson.JSONObject.parseObject(String.valueOf(msg.obj), StudentsInfo.class);
+ if (null != info) {
+ if (info.getBatch().equals("")) {
+ tv_class.setText("暂无信息");
+ } else {
+ tv_class.setText(info.getBatch());
+ }
+ if (info.getSno().equals("")) {
+ tv_number.setText("暂无信息");
+ } else {
+ tv_number.setText(info.getSno());
+ }
+ if (info.getRealname().equals("")) {
+ tv_name.setText("暂无信息");
+ } else {
+ tv_name.setText(info.getRealname());
+ }
+ }
+ break;
+ case -2:
+ tv_class.setText("暂无信息");
+ tv_number.setText("暂无信息");
+ tv_name.setText("暂无信息");
+ break;
+
}
}
@@ -589,7 +690,8 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
.setExtendField(object.toJSONString())
.create(); //启动下载}
} else {
- Log.e("fht", "无需更新");
+// ToastUtil.show("已是最新版本");
+ Log.e("fht", "已是最新版本");
}
}
@@ -628,7 +730,37 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
loadHeadImg(Configure.HTTP_TAG_HOME_PAGE_URL);
getLockedState();
// MyApplication.getInstance().getWhitePackageList();
+ getInfo(mHandler);
+ }
+ private void getInfo(final Handler handler) {
+ OkGo.post(Configure.GET_STUDENTS_INFO)
+ .params("sn", Utils.getSerial())
+ .execute(new StringCallback() {
+ @Override
+ public void onSuccess(String s, Call call, Response response) {
+ try {
+ LzyResponse lzyResponse = (LzyResponse) JSON.parseObject(s, LzyResponse.class);
+ Message message = new Message();
+ if (lzyResponse.code == 200) {
+ message.what = 2;
+ message.obj = lzyResponse.data;
+ handler.sendMessage(message);
+ } else {
+ handler.sendEmptyMessage(-2);
+ }
+ } catch (Exception e) {
+ Log.e("fht", "getInfo:" + e.getMessage());
+ }
+ }
+
+ @Override
+ public void onError(Call call, Response response, Exception e) {
+ super.onError(call, response, e);
+ Log.e("onError", "error");
+ }
+
+ });// 请求方式和请求url
}
private void loadHeadImg(String URL) {
@@ -1579,18 +1711,4 @@ public class MainActivity extends AppCompatActivity implements NetStateChangeObs
}
return num;
}
-
-
- @Override
- public void onNetDisconnected() {
-
- }
-
- @Override
- public void onNetConnected(NetworkType networkType) {
- initJpush();
- Aria.download(this).resumeAllTask();
- }
-
-
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
index 95df396..62810d3 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
@@ -19,6 +19,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.LogUtils;
+import com.blankj.utilcode.util.ToastUtils;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.mjsheng.myappstore.MyApplication;
@@ -562,6 +563,7 @@ public class HTTPInterface {
int code = jsonObject.getInteger("code");
String msg = jsonObject.getString("msg");
String data = jsonObject.getString("data");
+ Log.e("setHideDesktopIcon", data);
ApkUtils.showAllAPP(context);
if (code == 200) {
if (data != null && !"".equals(data)) {
@@ -584,7 +586,7 @@ public class HTTPInterface {
});
}
- synchronized public static void getNetAndLaunchSetting(final Context context) {
+ synchronized public static void getNetAndLaunchSetting(final Context context) {
OkGo.post(Configure.NET_AND_LAUNCH_API)
.params("key", Configure.HTTP_KEY)
.params("sn", Utils.getSerial())
@@ -593,7 +595,12 @@ public class HTTPInterface {
public void onSuccess(String s, Call call, Response response) {
NetAndLaunchBean netAndLaunchBeanList = JSON.parseObject(s, NetAndLaunchBean.class);
LogUtils.e(s);
- setNetAndlaunch(netAndLaunchBeanList, context);
+ switch (netAndLaunchBeanList.getCode()) {
+ case 200:
+ setNetAndlaunch(netAndLaunchBeanList, context);
+ break;
+ default:
+ }
}
@Override
diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
index 67b9d82..e45ef4c 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
@@ -35,6 +35,8 @@ public class BootReceiver extends BroadcastReceiver {
startService(context);
}
+
+
}
private void startService(Context context) {
diff --git a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
index 0eb2896..2954f3a 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
@@ -444,13 +444,16 @@ public class MyJPushReceiver extends BroadcastReceiver {
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
+ @Override
public void onComplete() {
}
+ @Override
public void onError(Throwable param1Throwable) {
Log.e("mjsheng", "DeselectIDApi=onError:");
}
+ @Override
public void onNext(ResponseBody param1ResponseBody) {
try {
String str1;
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java
index e31f47d..6c7a71b 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java
@@ -8,12 +8,18 @@ package com.mjsheng.myappstore.server;
*/
import android.app.Service;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
+import android.content.IntentFilter;
import android.content.ServiceConnection;
+import android.net.ConnectivityManager;
+import android.net.Network;
+import android.net.NetworkInfo;
+import android.net.wifi.WifiInfo;
+import android.net.wifi.WifiManager;
import android.os.IBinder;
-import android.provider.Settings;
import android.support.annotation.Nullable;
import android.text.format.Formatter;
import android.util.Log;
@@ -25,16 +31,12 @@ import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.task.DownloadTask;
import com.blankj.utilcode.util.LogUtils;
-import com.blankj.utilcode.util.ToastUtils;
import com.mjsheng.myappstore.KeepAliveConnection;
import com.mjsheng.myappstore.MyApplication;
import com.mjsheng.myappstore.utils.ApkUtils;
import com.mjsheng.myappstore.utils.ServiceAliveUtils;
import com.mjsheng.myappstore.utils.ToastUtil;
-import com.tianma.netdetector.lib.NetStateChangeObserver;
-import com.tianma.netdetector.lib.NetworkType;
-import java.io.File;
import java.util.List;
@@ -44,7 +46,7 @@ import java.util.List;
* @author LiGuangMin
* @time Created by 2018/8/17 11:27
*/
-public class GuardService extends Service implements NetStateChangeObserver {
+public class GuardService extends Service {
private final static String TAG = GuardService.class.getSimpleName();
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
@@ -69,8 +71,10 @@ public class GuardService extends Service implements NetStateChangeObserver {
@Nullable
@Override
public IBinder onBind(Intent intent) {
+ registerNetworkReceiver();
return new KeepAliveConnection.Stub() {
};
+
}
@Override
@@ -80,16 +84,115 @@ public class GuardService extends Service implements NetStateChangeObserver {
Aria.init(this);
Aria.get(this).getDownloadConfig().setMaxTaskNum(1);
-
Aria.download(this).register();
-
// startForeground(1, new Notification());
// 绑定建立链接
bindService(new Intent(this, StepService.class), mServiceConnection, Context.BIND_IMPORTANT);
return START_STICKY;
}
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (null != mNetworkChangedRecceiver) {
+ unregisterReceiver(mNetworkChangedRecceiver);
+ }
+ }
+
+ private NetworkChangedRecceiver mNetworkChangedRecceiver;
+
+ public void registerNetworkReceiver() {
+ mNetworkChangedRecceiver = new NetworkChangedRecceiver();
+ IntentFilter filter = new IntentFilter();
+ filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ filter.addAction("android.net.ethernet.ETHERNET_STATE_CHANGED");
+ filter.addAction("android.net.ethernet.STATE_CHANGE");
+ filter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
+ filter.addAction("android.net.wifi.WIFI_STATE_CHANGED");
+ filter.addAction("android.net.wifi.STATE_CHANGE");
+ filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
+ registerReceiver(mNetworkChangedRecceiver, filter);
+ }
+
+ Long time1 = 0L;
+ Long time2 = 0L;
+
+ public class NetworkChangedRecceiver extends BroadcastReceiver {
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.LOLLIPOP) {
+ //获得ConnectivityManager对象
+ ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ //获取ConnectivityManager对象对应的NetworkInfo对象
+ //获取WIFI连接的信息
+ NetworkInfo wifiNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
+ //获取移动数据连接的信息
+ NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
+ if (wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
+ Log.e("fht", "WIFI已连接,移动数据已连接");
+ } else if (wifiNetworkInfo.isConnected() && !dataNetworkInfo.isConnected()) {
+ Log.e("fht", "WIFI已连接,移动数据已断开");
+ } else if (!wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
+ Log.e("fht", "WIFI已连接,移动数据已连接");
+ } else {
+ Log.e("fht", "WIFI已连接,移动数据已断开");
+ }
+ //API大于23时使用下面的方式进行网络监听
+ } else {
+ //获得ConnectivityManager对象
+ ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+ //获取所有网络连接的信息
+ Network[] networks = connMgr.getAllNetworks();
+ //用于存放网络连接信息
+ StringBuilder sb = new StringBuilder();
+ //通过循环将网络信息逐个取出来
+ for (int i = 0; i < networks.length; i++) {
+ //获取ConnectivityManager对象对应的NetworkInfo对象
+ NetworkInfo networkInfo = connMgr.getNetworkInfo(networks[i]);
+ if (null != networkInfo) {
+ sb.append(networkInfo.getTypeName() + " connect is " + networkInfo.isConnected());
+ }
+ }
+ Log.e("fht", sb.toString());
+ }
+ if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) {
+ Log.e("fht", "wifi信号强度变化");
+ }
+ //wifi连接上与否
+ if (intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)) {
+
+ NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
+ if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
+ Log.e("fht", "wifi断开");
+ } else if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
+ WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ WifiInfo wifiInfo = wifiManager.getConnectionInfo();
+ //获取当前wifi名称
+ Log.e("fht", "连接到网络 " + wifiInfo.getSSID());
+ time2 = System.currentTimeMillis();
+ if ((time2 - time1) > 60 * 1000) {
+ //可能会多次触发,1分钟之内不执行
+ //application中启动服务,startcommand执行会两次
+ startService(new Intent(context, InitJpushServer.class));
+ Aria.download(this).resumeAllTask();
+ time1 = time2;
+ Log.e("fht", "onReceive");
+ }
+ }
+ }
+ //wifi打开与否
+ if (intent.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
+ int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
+ if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
+ Log.e("fht", "系统关闭wifi");
+ } else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
+ Log.e("fht", "系统开启wifi");
+ }
+ }
+ }
+ }
//在这里处理任务执行中的状态,如进度进度条的刷新
@Download.onTaskRunning
@@ -147,15 +250,6 @@ public class GuardService extends Service implements NetStateChangeObserver {
}
- @Override
- public void onNetDisconnected() {
- }
-
- @Override
- public void onNetConnected(NetworkType networkType) {
- Aria.download(this).resumeAllTask();
-
- }
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
index 0d0d286..fe7d747 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
@@ -573,6 +573,7 @@ public class InitJpushServer extends Service {
}
Utils.writeDisableUpdateList(this, upgrade_not.split(","), upgrade_ok.split(","));
+ LogUtils.e("UpdateList:upgrade_not:" + upgrade_not + "-----------upgrade_ok:" + upgrade_ok);
LogUtils.e("launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not);
boolean qch_app_power_on = Settings.System.putString(getApplicationContext().getContentResolver(), "qch_app_power_on", launch);
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java b/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java
index 52984a3..49b2353 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/Configure.java
@@ -204,4 +204,6 @@ public class Configure {
//获取隐藏桌面图标
public final static String NET_AND_LAUNCH_API = HTTP_TAG_HEAD_NEW + "automatic/get";
//获取应用升级自启
+ public static final String GET_STUDENTS_INFO = HTTP_TAG_HEAD_NEW + "Sn/getStudent";
+
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java b/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
index 1e5d7f9..533f887 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
@@ -919,8 +919,14 @@ public class Utils {
static synchronized public boolean writeDisableUpdateList(Context context, String[] banList, String[] notList) {
String now = Settings.System.getString(context.getContentResolver(), "qch_app_forbid");
- String[] nowList = now.split(",");
- List allList = new ArrayList<>(Arrays.asList(nowList));//已经写入的列表
+ String[] nowList;
+ List allList;
+ if (now == null || now.equalsIgnoreCase("")) {
+ allList = new ArrayList<>();
+ } else {
+ nowList = now.split(",");
+ allList = new ArrayList<>(Arrays.asList(nowList));//已经写入的列表
+ }
boolean writeSucceed = false;
if (banList != null && banList.length > 0) {
for (String s : banList) {
@@ -944,7 +950,7 @@ public class Utils {
list = list.substring(0, list.length() - 1);
Log.e("fht", list);
writeSucceed = Settings.System.putString(context.getContentResolver(), "qch_app_forbid", list);
- Log.e("fht","qch_app_forbid:"+list);
+ Log.e("fht", "qch_app_forbid:" + list);
} else {
writeSucceed = Settings.System.putString(context.getContentResolver(), "qch_app_forbid", "Invalid");
}
diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml
index c4eb313..7941f91 100644
--- a/app/src/main/res/layout-land/activity_main.xml
+++ b/app/src/main/res/layout-land/activity_main.xml
@@ -7,51 +7,77 @@
android:background="#ffffff"
tools:context=".activity.MainActivity">
+
+
+
+
+
+
+ app:layout_constraintTop_toBottomOf="@+id/bannerLayout"
+ app:layout_constraintVertical_bias="0.05">
-
-
+ android:layout_height="@dimen/dp_20"
+ >
+
@@ -67,12 +106,11 @@
+ android:layout_height="@dimen/dp_20"
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ app:layout_constraintHorizontal_bias="0.5"
+ app:layout_constraintStart_toStartOf="parent"
+ app:layout_constraintTop_toBottomOf="@+id/linearLayout" />
\ No newline at end of file
diff --git a/app/src/main/res/layout-port/activity_main.xml b/app/src/main/res/layout-port/activity_main.xml
index 05744ec..7f275ea 100644
--- a/app/src/main/res/layout-port/activity_main.xml
+++ b/app/src/main/res/layout-port/activity_main.xml
@@ -8,26 +8,63 @@
tools:context=".activity.MainActivity">
+
+
+
+
+
+
+
+ app:layout_constraintVertical_bias="0.15">
-
-
+ android:layout_height="@dimen/dp_30">
+
+
@@ -71,8 +111,7 @@
android:layout_marginTop="@dimen/dp_10">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -89,15 +279,15 @@
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 4e2f0aed0ac4be6029206401f3e0991e623584e3..2e4185a03dfd61b3ab4d957d7626a366ef6bedd2 100644
GIT binary patch
delta 4462
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
T+S`9#C^+gWI*>}RP2_(7c#Cu%
delta 4118
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
T+S`9#C^+gWI*>}RP2_(7c#Cu%
delta 4118
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
T+S`9#C^+gWI*>}RP2_(7c#Cu%
delta 4118
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
T+S`9#C^+gWI*>}RP2_(7c#Cu%
delta 4118
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
T+S`9#C^+gWI*>}RP2_(7c#Cu%
delta 4118
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