From 402fe640450559f46d7dd2811e9fffe8a9bc5e08 Mon Sep 17 00:00:00 2001
From: FHT <981964879@qq.com>
Date: Mon, 29 Mar 2021 09:45:15 +0800
Subject: [PATCH] =?UTF-8?q?version:=20update:2021.03.29=20fix:=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9=E4=B8=BAmvp=E6=9E=B6=E6=9E=84=EF=BC=8C=E9=A1=BA?=
=?UTF-8?q?=E5=BA=8F=E6=89=A7=E8=A1=8C=EF=BC=8C=E4=BC=98=E5=8C=96=E8=BF=9E?=
=?UTF-8?q?=E6=8E=A5=E7=9A=84=E6=AC=A1=E6=95=B0=20add:?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
app/build.gradle | 34 +-
app/src/main/AndroidManifest.xml | 41 +-
.../myappstore/activity/MainActivity.java | 2223 +++--------------
.../myappstore/activity/MainContact.java | 127 +
.../myappstore/activity/MainPresenter.java | 1170 +++++++++
.../myappstore/activity/OldActivity.java | 1844 ++++++++++++++
.../mjsheng/myappstore/base/BaseActivity.java | 38 +
.../BaseApplication.java} | 176 +-
.../myappstore/base/BasePresenter.java | 10 +
.../com/mjsheng/myappstore/base/BaseView.java | 4 +
.../mjsheng/myappstore/bean/Appground.java | 1 +
.../mjsheng/myappstore/bean/BaseResponse.java | 6 +-
.../myappstore/bean/BrowserBookmarks.java | 25 +
.../mjsheng/myappstore/bean/BrowserData.java | 25 +
.../mjsheng/myappstore/bean/StudentsInfo.java | 2 +
.../mjsheng/myappstore/comm/CommonDatas.java | 77 +-
.../myappstore/download/StorageUtils.java | 126 -
.../jpush/MyJPushMessageReceiver.java | 6 +-
.../myappstore/manager/AmapManager.java | 83 +
.../myappstore/manager/FileManager.java | 43 +
.../manager/NetInterfaceManager.java | 532 ++++
.../myappstore/network/HTTPInterface.java | 49 +-
.../mjsheng/myappstore/network/Network.java | 330 ---
.../myappstore/network/URLAddress.java | 14 +-
.../network/api/newapi/AppinsideWebApi.java | 22 +
.../api/newapi/BrowserBookmarksApi.java | 19 +
.../network/api/newapi/BrowserListApi.java | 19 +
.../api/newapi/CheckTestUpdateApi.java | 15 +
.../network/api/newapi/CheckUpdateApi.java | 17 +
.../network/api/newapi/DesktopIconApi.java | 19 +
.../api/newapi/DevicesLockedStateApi.java | 17 +
.../network/api/newapi/GetDesktopApi.java | 15 +
...GetLockState.java => GetLockStateApi.java} | 2 +-
.../network/api/newapi/JpushTagsApi.java | 15 +
.../network/api/newapi/MACAddressApi.java | 23 +
.../api/newapi/ScreenLockStateApi.java | 15 +
.../network/api/newapi/StudentsInfosApi.java | 18 +
...pAppControl.java => TopAppControlApi.java} | 2 +-
...viceInfo.java => UpdateDeviceInfoApi.java} | 2 +-
.../myappstore/receiver/BootReceiver.java | 9 +-
.../myappstore/receiver/MyJPushReceiver.java | 124 +-
.../myappstore/server/GuardService.java | 47 +-
.../myappstore/server/InitJpushServer.java | 354 +--
.../myappstore/server/MainService.java | 449 ++++
.../myappstore/server/StepService.java | 12 +-
.../mjsheng/myappstore/utils/ApkUtils.java | 10 +-
.../mjsheng/myappstore/utils/ExampleUtil.java | 120 +
.../mjsheng/myappstore/utils/JGYUtils.java | 577 +++++
.../myappstore/utils/ServiceAliveUtils.java | 2 -
.../mjsheng/myappstore/utils/TimeUtils.java | 4 +-
.../mjsheng/myappstore/utils/ToastUtil.java | 4 +-
.../com/mjsheng/myappstore/utils/Utils.java | 22 +-
.../main/res/layout-land/activity_home.xml | 2 +-
.../main/res/layout-port/activity_home.xml | 2 +-
jiaoguanyiInfo.iml | 2 +-
55 files changed, 6040 insertions(+), 2906 deletions(-)
create mode 100644 app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/activity/OldActivity.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/base/BaseActivity.java
rename app/src/main/java/com/mjsheng/myappstore/{MyApplication.java => base/BaseApplication.java} (84%)
create mode 100644 app/src/main/java/com/mjsheng/myappstore/base/BasePresenter.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/base/BaseView.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/bean/BrowserBookmarks.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/bean/BrowserData.java
delete mode 100644 app/src/main/java/com/mjsheng/myappstore/download/StorageUtils.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/manager/AmapManager.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/manager/FileManager.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java
delete mode 100644 app/src/main/java/com/mjsheng/myappstore/network/Network.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/AppinsideWebApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserBookmarksApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserListApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckUpdateApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DesktopIconApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DevicesLockedStateApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetDesktopApi.java
rename app/src/main/java/com/mjsheng/myappstore/network/api/newapi/{GetLockState.java => GetLockStateApi.java} (92%)
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/JpushTagsApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/MACAddressApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/ScreenLockStateApi.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/network/api/newapi/StudentsInfosApi.java
rename app/src/main/java/com/mjsheng/myappstore/network/api/newapi/{TopAppControl.java => TopAppControlApi.java} (91%)
rename app/src/main/java/com/mjsheng/myappstore/network/api/newapi/{UpdateDeviceInfo.java => UpdateDeviceInfoApi.java} (93%)
create mode 100644 app/src/main/java/com/mjsheng/myappstore/server/MainService.java
create mode 100644 app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java
diff --git a/app/build.gradle b/app/build.gradle
index 899fb6d..fce79cc 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -28,30 +28,40 @@ android {
}
+
lintOptions {
checkReleaseBuilds false
}
+
dexOptions {
jumboMode true
}
- dataBinding {
- enabled = true
+
+// dataBinding {
+// enabled = true
+// }
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
}
+
//多版本
productFlavors {
official {
flavorDimensions "default"
- versionCode 1034
- versionName "2.0.3.4"// 正式jiaoguanyi.com 双数正式 单数测试
+ versionCode 1035
+ versionName "2.0.3.5"
/*********************************极光推送************************************/
manifestPlaceholders = [
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
JPUSH_APPKEY : "20f70bbeb78bad23eddd08d0", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
+ channel_value : "official",
]
signingConfig signingConfigs.debug
/*********************************极光推送end************************************/
- buildConfigField "String", "ROOT_URL", '"https://partner.jiaoguanyi.com/api/"'
+ buildConfigField "String", "ROOT_URL", '"http://partner.jiaoguanyi.com/api/"'
buildConfigField "String", "WebsocketURL", '"ws://47.107.133.19:1234"'
}
@@ -66,6 +76,7 @@ android {
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
JPUSH_APPKEY : "52d81643665bb2cadacf0e9e", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
+ channel_value : "beta"
]
signingConfig signingConfigs.debug
/*********************************极光推送end************************************/
@@ -84,22 +95,25 @@ android {
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
JPUSH_APPKEY : "a98c8a210687b4bb43c39c39", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
+ channel_value : "zhongyou"
]
signingConfig signingConfigs.debug
/*********************************极光推送end************************************/
buildConfigField "String", "ROOT_URL", '"https://jgy.jundunxueyuan.com/api/"'
buildConfigField "String", "WebsocketURL", '"ws://39.98.59.202:2345"'
}
+
newl {
flavorDimensions "default"
- versionCode 166
+ versionCode 167
// versionCode 1031
- versionName "1.2.6"
+ versionName "1.2.7"
/*********************************极光推送************************************/
manifestPlaceholders = [
JPUSH_PKGNAME: "com.jiaoguanyi.appstore",
JPUSH_APPKEY : "52d81643665bb2cadacf0e9e", //JPush上注册的包名对应的appkey.
JPUSH_CHANNEL: "developer-default", //暂时填写默认值即可.
+ channel_value : "newl"
]
signingConfig signingConfigs.debug
/*********************************极光推送end************************************/
@@ -121,6 +135,7 @@ android {
keyPassword "123456"
v2SigningEnabled false
}
+
release {// 签名文件
storeFile file("src/main/doc/xueshibaoos.jks")
storePassword "123456"
@@ -186,6 +201,8 @@ dependencies {
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
+ implementation 'com.jakewharton:butterknife:10.1.0'
+ annotationProcessor 'com.jakewharton:butterknife-compiler:10.1.0'
implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
implementation 'com.alibaba:fastjson:1.2.70'
implementation 'com.lzy.net:okgo:2.1.4'
@@ -200,14 +217,11 @@ dependencies {
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'cn.jiguang.sdk:jpush:3.8.6' // 此处以JPush 3.5.6 版本为例。
implementation 'cn.jiguang.sdk:jcore:2.6.0' // 此处以JCore 2.2.8 版本为例。
-// implementation "com.github.yjfnypeu:UpdatePlugin:3.0.1"
implementation 'com.blankj:utilcode:1.23.7'
implementation 'com.arialyy.aria:core:3.8.15'
annotationProcessor 'com.arialyy.aria:compiler:3.8.15'
-// implementation 'com.github.tianma8023:NetDetector:v0.2.0'
implementation "org.java-websocket:Java-WebSocket:1.4.1"
implementation 'com.google.zxing:core:3.3.0'
- implementation 'com.hjq:xxpermissions:6.0'
implementation 'com.amap.api:location:5.1.0'
//高德地图定位
}
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index c851064..bdb6033 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -24,6 +24,7 @@
+
+
+ android:maxSdkVersion="23" />
+
@@ -78,47 +81,44 @@
+
-
-
-
+
-
-
+ android:launchMode="singleTop">
-
-
+
+
@@ -129,6 +129,12 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
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 4b1d4c9..0d7bfa5 100644
--- a/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainActivity.java
@@ -1,123 +1,81 @@
package com.mjsheng.myappstore.activity;
-import android.annotation.SuppressLint;
import android.app.AlertDialog;
-import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
import android.content.Context;
-import android.content.ContextWrapper;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.PackageInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Configuration;
-import android.os.BatteryManager;
-import android.os.Build;
-import android.os.Bundle;
-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 androidx.appcompat.app.AppCompatActivity;
-import androidx.localbroadcastmanager.content.LocalBroadcastManager;
-
-import android.text.TextUtils;
import android.util.Log;
-import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
-import com.alibaba.fastjson.JSON;
-import com.amap.api.location.AMapLocation;
-import com.amap.api.location.AMapLocationListener;
-import com.amap.api.location.AMapLocationQualityReport;
-import com.arialyy.aria.core.Aria;
-import com.blankj.utilcode.util.AppUtils;
-import com.blankj.utilcode.util.EncryptUtils;
-import com.blankj.utilcode.util.LogUtils;
-import com.blankj.utilcode.util.PathUtils;
-import com.blankj.utilcode.util.ToastUtils;
-import com.hjq.permissions.OnPermission;
-import com.hjq.permissions.Permission;
-import com.hjq.permissions.XXPermissions;
-import com.lzy.okgo.OkGo;
-import com.lzy.okgo.callback.StringCallback;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.google.gson.JsonObject;
import com.mjsheng.myappstore.BuildConfig;
-import com.mjsheng.myappstore.MyApplication;
import com.mjsheng.myappstore.R;
-import com.mjsheng.myappstore.bean.ForceDownloadBean;
-import com.mjsheng.myappstore.bean.ForceDownloadData;
-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.comm.CommonDatas;
-import com.mjsheng.myappstore.jpush.TagAliasOperatorHelper;
-import com.mjsheng.myappstore.network.HTTPInterface;
-import com.mjsheng.myappstore.network.Network;
-import com.mjsheng.myappstore.network.api.AppLimitApi;
-import com.mjsheng.myappstore.network.api.DeselectBrowserIDApi;
-import com.mjsheng.myappstore.network.api.DeselectIDApi;
-import com.mjsheng.myappstore.network.api.ForceDownloadApi;
-import com.mjsheng.myappstore.network.api.NetAndLaunchApi;
-import com.mjsheng.myappstore.network.api.SystemSettingApi;
-import com.mjsheng.myappstore.server.MyDownloadService;
+import com.mjsheng.myappstore.base.BaseActivity;
import com.mjsheng.myappstore.utils.ApkUtils;
-import com.mjsheng.myappstore.network.URLAddress;
import com.mjsheng.myappstore.utils.ExampleUtil;
-import com.mjsheng.myappstore.utils.MySQLData;
-import com.mjsheng.myappstore.utils.SPUtils;
+import com.mjsheng.myappstore.utils.JGYUtils;
import com.mjsheng.myappstore.utils.SaveListUtils;
import com.mjsheng.myappstore.utils.SysSettingUtils;
import com.mjsheng.myappstore.utils.ToastUtil;
import com.mjsheng.myappstore.utils.Utils;
-import org.json.JSONException;
-import org.json.JSONObject;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
import java.util.concurrent.TimeUnit;
-import cn.jpush.android.api.JPushInterface;
+import butterknife.BindView;
+import butterknife.ButterKnife;
+import butterknife.OnClick;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
-import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
-import io.reactivex.schedulers.Schedulers;
-import okhttp3.Call;
-import okhttp3.Response;
-import okhttp3.ResponseBody;
import rx.Observable;
-import rx.functions.Action1;
-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 BaseActivity implements MainContact.MainView {
+ @BindView(R.id.imageView)
+ ImageView imageView;
+ @BindView(R.id.tv_devsn)
+ TextView tv_devsn;
+ @BindView(R.id.tv_devmac)
+ TextView tv_devmac;
+ @BindView(R.id.version)
+ TextView tv_version;
+ @BindView(R.id.tv_batch)
+ TextView tv_batch;
+ @BindView(R.id.tv_class)
+ TextView tv_class;
+ @BindView(R.id.tv_number)
+ TextView tv_number;
+ @BindView(R.id.tv_name)
+ TextView tv_name;
+ @BindView(R.id.chkupd)
+ Button bt_checkupdate;
+ @BindView(R.id.checkupdate)
+ RelativeLayout checkupdate;
+ @BindView(R.id.back)
+ ImageView back;
+ @BindView(R.id.locked)
+ ImageView iv_locked;
+ @BindView(R.id.layout_class)
+ RelativeLayout layout_class;
+ @BindView(R.id.layout_number)
+ RelativeLayout layout_number;
+ @BindView(R.id.layout_name)
+ RelativeLayout layout_name;
-public class MainActivity extends AppCompatActivity implements AMapLocationListener {
+ private static final String TAG = MainActivity.class.getSimpleName();
+ private MainPresenter mPresenter;
- private long mPreClickTime;
- private Context mContext;
- private final String ACTION_HrReceiver_JGY_DIS = "qch_jgy_network_disallow";
- private final String ACTION_HrReceiver_JGY = "qch_jgy_network_allow";
-// private DownloadManager downloadManager;
- private ImageView imageView;
- private TextView tv_devsn, tv_devmac, tv_version;
- private TextView tv_batch, tv_class, tv_number, tv_name;
- private Button bt_checkupdate;
- private int DeviceInfo;
- private RelativeLayout checkupdate;
- private ImageView back, iv_locked;
- private RelativeLayout layout_class, layout_number, layout_name;
+ private boolean netWorkIsRunning = false;
+ private boolean updateApp = false;
//jiguang
public static boolean isForeground = false;
//for receive customer msg from jpush server
@@ -127,690 +85,261 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
public static final String KEY_MESSAGE = "message";
public static final String KEY_EXTRAS = "extras";
-
@Override
- protected void onCreate(Bundle savedInstanceState) {
- if (savedInstanceState != null) {
- // FRAGMENTS_TAG
- savedInstanceState.remove("android:support:fragments");
- savedInstanceState.remove("android:fragments");
- }
-
-// if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
-// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
-// }
- requestPermission();
-// acquireWakeLock();//加入后锁屏解锁有延迟
- registerMessageReceiver(); // used for receive msg
-// HTTPInterface.checkDevicesInfo(handler);
- startService(new Intent(MainActivity.this, MyDownloadService.class));
-
- Aria.get(this).getDownloadConfig().setMaxTaskNum(1);
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
-
-// Aria.download(this).removeAllTask(false);
-
- initView();
- initData();
-
-// downloadManager = DownloadService.getDownloadManager();
-// downloadManager.startAllTask();
- Intent allIntent = new Intent();
- allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION);
- sendBroadcast(allIntent);
-
-// CmdUtil.execute(" screencap -p /sdcard/" + "screen" + System.currentTimeMillis() + ".png");
-// Utils.getMachine(this);
-// Utils.getHardware(this);
-// Utils.queryStorage();
-// Utils.shotScreen(this);
- HTTPInterface.updateDeviceInfo(this);
-// testFilepath();
- HTTPInterface.getSnTimeControl(MainActivity.this);
- }
-
- private void testFilepath() {
- File file = new File("/system/media/bootanimation.zip");
- if (file.exists()) {
- Log.e("testFilepath", "exists");
- } else {
- Log.e("testFilepath", "not exists");
- }
- File file2 = new File("/system/media/bootanimation1.zip");
- try {
- file2.createNewFile();
- } catch (IOException e) {
- e.printStackTrace();
- Log.e("testFilepath", "createNewFile:" + e.getMessage());
- }
- }
-
-
- public void registerMessageReceiver() {
- mMessageReceiver = new MessageReceiver();
- IntentFilter filter = new IntentFilter();
- filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
- filter.addAction(MESSAGE_RECEIVED_ACTION);
- LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter);
- }
-
- public class MessageReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- try {
- if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
- String messge = intent.getStringExtra(KEY_MESSAGE);
- String extras = intent.getStringExtra(KEY_EXTRAS);
- StringBuilder showMsg = new StringBuilder();
- showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
- if (!ExampleUtil.isEmpty(extras)) {
- showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
- }
-// setCostomMsg(showMsg.toString());
- }
- } catch (Exception e) {
- }
- }
- }
-
-
- public void setAlias() {
- TagAliasBean tagAliasBean = new TagAliasBean();
- tagAliasBean.action = ACTION_SET;
- sequence++;
- tagAliasBean.alias = Utils.getSerial();
- tagAliasBean.isAliasAction = true;
- TagAliasOperatorHelper.getInstance().handleAction(MainActivity.this, sequence, tagAliasBean);
+ public int getLayoutId() {
+ return R.layout.activity_main;
}
@Override
- public void onConfigurationChanged(Configuration newConfig) {
- super.onConfigurationChanged(newConfig);
- setContentView(R.layout.activity_main);
- mContext = this;
+ public void initView() {
+ ButterKnife.bind(this);
+ mPresenter = new MainPresenter(this);
+ mPresenter.attachView(this);
+ Log.e(TAG, "initView: " + "start request");
+ mPresenter.getFirstConnect();
+ getDevicesInfo();
+ setStoreUpdateListener(bt_checkupdate);
}
- @Override
- public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
- // super.onSaveInstanceState(outState, outPersistentState);
- }
-
- private class LocationReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- // ToastTool.show("广播:::"+intent.getAction() + "--------" + intent.getStringExtra("package_name"));
+ private void getDevicesInfo() {
+ String sn = Utils.getSerial();
+ tv_devsn.setText(sn);
+ if (sn.length() != 12) {
+ showSNErrorDialog();
}
- }
-
-
- //获取教管易版本号
- synchronized private String getAPPVersionName() {
- PackageManager pm = getPackageManager();
- String versionName;
- try {
- PackageInfo packageInfo = pm.getPackageInfo("com.jiaoguanyi.store", 0);
- versionName = packageInfo.versionName;
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- versionName = "0";
- }
- return versionName;
- }
-
- synchronized public void sendMACaddress() {
- String devices_version = Utils.getProperty("ro.custom.build.version", "获取失败");//获取自定义版本
- String rid = JPushInterface.getRegistrationID(MainActivity.this);
- OkGo.post(URLAddress.SEND_DEVICES)
- .params("sn", Utils.getSerial())
- .params("mac", com.blankj.utilcode.util.DeviceUtils.getMacAddress())
- .params("jpush_id", rid)
- .params("devices_version", devices_version)
- .params("appstore_version", BuildConfig.VERSION_NAME)//我的设备版本号
- .params("store_version", getAPPVersionName())//管教易版本号
- .execute(new StringCallback() {
- @Override
- public void onSuccess(String s, Call call, Response response) {
- try {
- com.alibaba.fastjson.JSONObject msgObject = JSON.parseObject(s);
- Log.e("fht", "sendMACaddress onSuccess" + s);
- } catch (Exception e) {
- Log.e("fht", "sendMACaddress Exception" + e);
- }
- }
-
- @Override
- public void onError(Call call, Response response, Exception e) {
- super.onError(call, response, e);
- Log.e("fht", "sendMACaddress onError:" + e.getMessage());
-
- }
- });
- {
-
- }
- }
-
- 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);
- String SN = Utils.getSerial();
- tv_devsn.setText(SN);
- if (SN.length() != 12) {
- AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
-// builder.setTitle("SN错误");
- builder.setMessage("注意:设备SN号码格式错误!");
- builder.setIcon(R.mipmap.ic_launcher);
- builder.setCancelable(true);
- //设置正面按钮
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- builder.show();
- }
- tv_devmac = findViewById(R.id.tv_devmac);
- String macaddr = com.blankj.utilcode.util.DeviceUtils.getMacAddress();
- Log.e("getMacAddress", Utils.getAndroid7MAC());
+ String macaddr = Utils.getAndroid7MAC();
if (macaddr.equals("")) {
tv_devmac.setText("获取失败");
} else {
tv_devmac.setText(macaddr);
}
- tv_version = findViewById(R.id.version);
tv_version.setText(BuildConfig.VERSION_NAME);
-
- layout_class = findViewById(R.id.layout_class);
- layout_number = findViewById(R.id.layout_number);
- layout_name = findViewById(R.id.layout_name);
-
- tv_batch = findViewById(R.id.tv_batch);
- String batch = (String) SPUtils.get(this, "batch", "暂无信息");
- if (TextUtils.isEmpty(batch)||batch.equalsIgnoreCase("暂无信息")){
- tv_batch.setVisibility(View.GONE);
- }
- tv_batch.setText(batch);
- tv_class = findViewById(R.id.tv_class);
- String classes = (String) SPUtils.get(this, "classes", "暂无信息");
- if (TextUtils.isEmpty(classes)||classes.equalsIgnoreCase("暂无信息")){
- layout_class.setVisibility(View.GONE);
- }
- tv_class.setText(classes);
- tv_number = findViewById(R.id.tv_number);
- String sno = (String) SPUtils.get(this, "sno", "暂无信息");
- if (TextUtils.isEmpty(sno)||sno.equalsIgnoreCase("暂无信息")){
- layout_number.setVisibility(View.GONE);
- }
- tv_number.setText(sno);
- tv_name = findViewById(R.id.tv_name);
- String realname = (String) SPUtils.get(this, "realname", "暂无信息");
- if (TextUtils.isEmpty(realname)||realname.equalsIgnoreCase("暂无信息")){
- layout_name.setVisibility(View.GONE);
- }
- tv_name.setText(realname);
- back = findViewById(R.id.back);
- back.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- lazyExit();
- }
- });
- iv_locked = findViewById(R.id.locked);
-
-
- bt_checkupdate = findViewById(R.id.chkupd);
- bt_checkupdate.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- ToastUtil.show("正在检查更新");
- HTTPInterface.checkUpdate(mHandler, BuildConfig.APPLICATION_ID);
- }
- });
}
- 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 showSNErrorDialog() {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setMessage("注意:设备SN号码格式错误!");
+ builder.setIcon(R.mipmap.ic_launcher);
+ builder.setCancelable(true);
+ //设置正面按钮
+ builder.setPositiveButton("确定", (dialog, which) -> dialog.dismiss());
+ builder.show();
}
+ long timeMillis;
- private void initData() {
- Log.e("mjhsneg", "gagagag--------------------------" + Utils.getSerial());
- int first = (int) SPUtils.get(MainActivity.this, "first_connect", 0);
- if (first == 0) {
- SysSettingUtils.setDisableSetting(MainActivity.this);//设置系统管控
- }
- getLockedState(mHandler);
-// MyApplication.getInstance().getWhitePackageList();
-
-// update();//接口更新app
- checkUpdate();//更新app
-
- Log.e("mac", com.blankj.utilcode.util.DeviceUtils.getMacAddress());
- DeviceInfo = (int) SPUtils.get(this, "isLogined", 2);
- switch (DeviceInfo) {
- case 0:
- setImageAndText(imageView, "设备未绑定");
- break;
- case 1:
- setImageAndText(imageView, "设备已绑定");
- break;
- case 2:
- setImageAndText(imageView, "未经验证的设备,请联系客服");
-
- break;
- }
+ @Override
+ public void initData() {
+ registerMessageReceiver();
+ Log.e("getMacAddress", Utils.getAndroid7MAC());
+ timeMillis = System.currentTimeMillis();
+ mPresenter.getLockedState();
}
- private void setImageAndText(ImageView imageView, String text) {
-// Bitmap bitmap = Utils.createQRImage(Utils.getSn(), 250, 250);
-// imageView.setImageBitmap(bitmap);
+ @Override
+ public void setBatchText(String text, int visibility) {
+ tv_batch.setText(text);
+ tv_batch.setVisibility(visibility);
}
-
-// Handler handler = new Handler() {
-//// @Override
-//// public void handleMessage(Message msg) {
-//// super.handleMessage(msg);
-//// switch (msg.what) {
-//// case 0:
-//// SPUtils.put(MainActivity.this, "isLogined", 0);
-//// setImageAndText(imageView, "设备未绑定");
-//// break;
-//// case 1:
-//// UserInfo userInfo = (UserInfo) msg.obj;
-//// SPUtils.put(MainActivity.this, "isLogined", 1);
-//// SPUtils.put(MainActivity.this, "member_id", userInfo.getMember_id());
-//// SPUtils.put(MainActivity.this, "sn_id", userInfo.getId());
-//// setImageAndText(imageView, "设备已绑定");
-//// break;
-//// case 2:
-//// SPUtils.put(MainActivity.this, "isLogined", 2);
-//// setImageAndText(imageView, "未经验证的设备,请联系客服");
-//// break;
-//// }
-//// }
-//// };
-
- private String[] permission = new String[]{
-// Permission.SYSTEM_ALERT_WINDOW,
-// Permission.CAMERA,
-// Permission.READ_SMS,
-// Permission.RECEIVE_SMS,
-// Permission.SEND_SMS,
-// Permission.REQUEST_INSTALL_PACKAGES,//不用请求也可以安装
- Permission.READ_EXTERNAL_STORAGE,
- Permission.WRITE_EXTERNAL_STORAGE,
-// Permission.READ_PHONE_STATE
- };
-
- public void requestPermission() {
- XXPermissions.with(this)
- // 可设置被拒绝后继续申请,直到用户授权或者永久拒绝
- .constantRequest()
- // 支持请求6.0悬浮窗权限8.0请求安装权限
- //.permission(Permission.REQUEST_INSTALL_PACKAGES)
- // 不指定权限则自动获取清单中的危险权限
- .permission(permission)
- .request(new OnPermission() {
-
- @Override
- public void hasPermission(List granted, boolean isAll) {
- if (isAll) {
- File file = new File(PathUtils.getExternalDownloadsPath() + "/jgy/");
- if (!file.exists()){
- file.mkdirs();
- }
- } else {
- ToastUtil.show("需要授予所有权限才能正常使用本程序!");
- }
- }
-
- @Override
- public void noPermission(List denied, boolean quick) {
- if (quick) {
- ToastUtil.show("被永久拒绝授权,请手动授予权限!");
- //如果是被永久拒绝就跳转到应用权限系统设置页面
- XXPermissions.gotoPermissionSettings(MainActivity.this);
- } else {
- ToastUtil.show("获取权限失败");
- }
- }
- });
+ @Override
+ public void setClassText(String text, int visibility) {
+ tv_class.setText(text);
+ layout_class.setVisibility(visibility);
}
+ @Override
+ public void setNumberText(String text, int visibility) {
+ tv_number.setText(text);
+ layout_number.setVisibility(visibility);
+ }
- private PowerManager.WakeLock wakeLock = null;
- private static final String mWakeLockName = "BackupService";
+ @Override
+ public void setNameText(String text, int visibility) {
+ tv_name.setText(text);
+ layout_name.setVisibility(visibility);
+ }
/**
- * 获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行
+ * @param loocked
*/
- 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(final Handler handler) {
- OkGo.post(URLAddress.HTTP_TAG_FIRST)
- .params("sn", Utils.getSerial())
- .execute(new StringCallback() {
- @Override
- public void onSuccess(String s, Call call, Response response) {
- Log.e("onSuccess", s);
- Log.e("getSerial", Utils.getSerial());
- com.alibaba.fastjson.JSONObject msgObject = JSON.parseObject(s);
- Log.e("getLockedState", s);
- Integer code = (msgObject.getInteger("code"));
- if (code == 200) {
- com.alibaba.fastjson.JSONObject dataArray = msgObject.getJSONObject("data");
- int lock = dataArray.getInteger("lock");
- Log.e("ttlocked", String.valueOf(lock));
- if (lock == 0) {
- locked = false;
- boolean se = Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_unlock_ipad", 1);
- Log.e("ttlocked1", "getLockedState---------" + Settings.System.getString(MainActivity.this.getContentResolver(), "qch_unlock_ipad"));
- SysSettingUtils.setEnableSetting(MainActivity.this);
- SPUtils.put(MainActivity.this, "first_connect", 1);
-
- Log.e("ttlocked1", "qch_unlock_ipad---------" + locked + se);
- handler.sendEmptyMessage(-3);
- } else {
- locked = true;
- Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_unlock_ipad", 0);
- Log.e("ttlocked2", "qch_unlock_ipad---------" + locked);
-
- String a = Settings.System.getString(MainActivity.this.getContentResolver(), "DeselectBrowserArray");
- Log.e("ttlocked2", "DeselectBrowserArray---------" + a);
- String b = Settings.System.getString(MainActivity.this.getContentResolver(), "qch_webblack_url");
- Log.e("ttlocked2", "qch_webblack_url---------" + b);
- handler.sendEmptyMessage(3);
- HTTPInterface.setJpushTags(MainActivity.this);
- sendMACaddress();
- timerImitate();
- lazyLoading();
- }
- } else if (code == -300) {
-// ApkUtils.uninstallAllApp(MainActivity.this);
- handler.sendEmptyMessage(-3);
- }
- }
-
- @Override
- public void onError(Call call, Response response, Exception e) {
- super.onError(call, response, e);
- Log.e("onError", "error");
- }
-
- });// 请求方式和请求url
- }
-
- private void lazyLoading() {
- Observable.timer(1000, TimeUnit.MILLISECONDS)
- .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
- .subscribe(new Action1() {
- @Override
- public void call(Long aLong) {
-// getDeselectBrowerID();//浏览器网址管控
- HTTPInterface.setBrowserList(MainActivity.this);//浏览器网址管控
- HTTPInterface.setHomepagtag(MainActivity.this);//设置主页和标签
- HTTPInterface.setAppinsideWeb(MainActivity.this);//app内部网页管控
- HTTPInterface.setHideDesktopIcon(MainActivity.this);//设置桌面图标隐藏
- getDeselectID();//ID管控
- getAppLimitApi();//写入可被安装的包名
-// getAppInfo();//上传APP信息
- ApkUtils.getAppInfo(MainActivity.this);//上传APP信息
- getSystemSetting();//设置系统管控
- getNetAndLaunchSetting();//联网管控
-// Aria.download(this).removeAllTask(true);
- getForceDownload();//强制下载apk
- resetDevice();//恢复出厂设置
- // fromNetToUpdate();
- String registrationID = JPushInterface.getRegistrationID(MainActivity.this);
- Log.e("mjsheng", registrationID + "------------------------");
- SaveListUtils.getList();
- }
- });
- }
-
- private void resetDevice() {
- boolean isReset = MySQLData.GetBooleanData(this, CommonDatas.IS_RESET);
- int batteryLevel = getBatteryLevel();
- LogUtils.e(batteryLevel + "------------------" + isReset);
- if (isReset && batteryLevel >= CommonDatas.MIN_POWER) {
- Utils.doMasterClear(this);
- }
- }
-
- private void checkUpdate() {
- HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.store");
-// HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.appstore");
- HTTPInterface.checkTestUpdate(MainActivity.this);
- }
-
- private Handler mHandler = new Handler() {
- @SuppressLint("HandlerLeak")
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 100:
-// ToastUtil.show("已是最新版本");
- break;
- case 200:
- com.alibaba.fastjson.JSONObject jsonObject = (com.alibaba.fastjson.JSONObject) msg.obj;
- installAPK(jsonObject);
- break;
- case -200:
- Log.e("fht", "no update");
- break;
- case 2:
- StudentsInfo info = com.alibaba.fastjson.JSONObject.parseObject(String.valueOf(msg.obj), StudentsInfo.class);
- SPUtils.put(MainActivity.this, "admin_id", info.getAdmin_id());
- if (null != info) {
- if (TextUtils.isEmpty(info.getBatch())) {
- tv_batch.setVisibility(View.GONE);
- tv_batch.setText("暂无信息");
- } else {
- tv_batch.setVisibility(View.VISIBLE);
- tv_batch.setText(info.getBatch());
- SPUtils.put(MainActivity.this, "batch", info.getBatch());
- }
- if (TextUtils.isEmpty(info.getClasses())) {
- layout_class.setVisibility(View.GONE);
- tv_class.setText("暂无信息");
- } else {
- layout_class.setVisibility(View.VISIBLE);
- tv_class.setText(info.getClasses());
- SPUtils.put(MainActivity.this, "classes", info.getClasses());
- }
- if (TextUtils.isEmpty(info.getSno())) {
- layout_number.setVisibility(View.GONE);
- tv_number.setText("暂无信息");
- } else {
- layout_number.setVisibility(View.VISIBLE);
- tv_number.setText(info.getSno());
- SPUtils.put(MainActivity.this, "sno", info.getSno());
- }
- if (TextUtils.isEmpty(info.getRealname())) {
- layout_name.setVisibility(View.GONE);
- tv_name.setText("暂无信息");
- } else {
- layout_name.setVisibility(View.VISIBLE);
- tv_name.setText(info.getRealname());
- SPUtils.put(MainActivity.this, "realname", info.getRealname());
- }
- }
-
- break;
- case -2:
-// tv_batch.setText("暂无信息");
-// tv_class.setText("暂无信息");
-// tv_number.setText("暂无信息");
-// tv_name.setText("暂无信息");
- String batch = (String) SPUtils.get(MainActivity.this, "batch", "暂无信息");
- if (TextUtils.isEmpty(batch)||"暂无信息".equals(batch)) {
- tv_batch.setVisibility(View.GONE);
- } else {
- tv_batch.setText(batch);
- }
-
- String classes = (String) SPUtils.get(MainActivity.this, "classes", "暂无信息");
- if (TextUtils.isEmpty(classes)||"暂无信息".equals(classes)) {
- layout_class.setVisibility(View.GONE);
- } else {
- tv_class.setText(classes);
- }
- String sno = (String) SPUtils.get(MainActivity.this, "sno", "暂无信息");
- if (TextUtils.isEmpty(sno)||"暂无信息".equals(sno)) {
- layout_number.setVisibility(View.GONE);
- } else {
- tv_number.setText(sno);
- }
- String realname = (String) SPUtils.get(MainActivity.this, "realname", "暂无信息");
- if (TextUtils.isEmpty(realname)||"暂无信息".equals(realname)) {
- layout_name.setVisibility(View.GONE);
- } else {
- tv_name.setText(realname);
- }
- break;
- case 3:
- iv_locked.setVisibility(View.VISIBLE);
- break;
- case -3:
- iv_locked.setVisibility(View.GONE);
- break;
- default:
- break;
- }
- }
-
- };
-
- private void installAPK(com.alibaba.fastjson.JSONObject jsonObject) {
- final String url = jsonObject.getString("url");
- int versionCode = jsonObject.getInteger("version_code");
- final String packageName = jsonObject.getString("package");
- String app_name = jsonObject.getString("app_name");
- final com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
- object.put("app_name", app_name);
- object.put("app_package", packageName);
- PackageManager pm = getPackageManager();
- PackageInfo packageInfo = null;
- try {
- packageInfo = pm.getPackageInfo(packageName, 0);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- if (packageInfo == null || packageInfo.versionCode < versionCode) {
- if (packageName.equalsIgnoreCase("com.jiaoguanyi.store")) {
-// Aria.download(this)
-// .load(url) //读取下载地址
-// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
-// .setExtendField(object.toJSONString())
-// .create(); //启动下载}
- Utils.ariaDownload(this, url, object);
+ @Override
+ public void setLockedState(boolean loocked) {
+ if (loocked) {
+ iv_locked.setVisibility(View.VISIBLE);
+ ApkUtils.getAppInfo(this);
+ //上传APP信息
+ if (netWorkIsRunning) {
+ //如果正在执行,不执行
return;
}
- AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
- builder.setTitle("更新:");
- builder.setMessage("检测到有新版本,是否更新?");
- builder.setIcon(R.mipmap.ic_launcher);
- builder.setCancelable(true);
- //设置正面按钮
- builder.setPositiveButton("更新", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
-// Aria.download(this)
-// .load(url) //读取下载地址
-// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
-// .setExtendField(object.toJSONString())
-// .create(); //启动下载}
- Utils.ariaDownload(MainActivity.this, url, object);
-
- dialog.dismiss();
- }
- });
- //设置反面按钮
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- });
- builder.show();
+ mPresenter.sendMACAddress();
+ //发送设备mac地址和信息
+ mPresenter.setJpushAlias();
+ //设置极光推送别名
+ SaveListUtils.getList();
+ mPresenter.getSystemSettingbegin();
+ netWorkIsRunning = true;
} else {
- if (!packageName.equalsIgnoreCase("com.jiaoguanyi.store")) {
- mHandler.postDelayed(toast, 4000);
+ iv_locked.setVisibility(View.GONE);
+ netWorkIsRunning = false;
+ SysSettingUtils.setEnableSetting(this);
+ }
+ }
+
+ @Override
+ public void setFirstConnect(boolean state) {
+ Log.e(TAG, "isFirstConnect: " + "end request");
+ if (state) {
+ mPresenter.setDisableSetting();
+ } else {
+
+ }
+ }
+
+ @Override
+ public void sendMACFinished() {
+ mPresenter.updateDeviceInfo();
+ }
+
+ @Override
+ public void updateDeviceInfoFinished() {
+ mPresenter.getSnTimeControl();
+ }
+
+ @Override
+ public void getSnTimeControlFinished() {
+
+ }
+
+ @Override
+ public void setAliasFinished() {
+ mPresenter.setJpushTags();
+ //设置极光推送tag
+ }
+
+ @Override
+ public void setTagsFinished() {
+ mPresenter.checkStoreUpdate();
+ }
+
+
+ @Override
+ public void checkStoreUpdateFinished() {
+ mPresenter.checkTestUpdate();
+ }
+
+
+ @Override
+ public void checkTestUpdateFinished() {
+ mPresenter.getDefaultDesktop();
+ }
+
+ @Override
+ public void buttonCheckUpdateFinished(boolean update, JsonObject jsonObject) {
+ this.updateApp = !update;
+ if (update) {
+ showDialog(jsonObject);
+ } else {
+ Observable.timer(5000, TimeUnit.MILLISECONDS)
+ .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
+ .subscribe(aLong -> ToastUtil.show("已经是最新版本"));
+ }
+ }
+
+ private void showDialog(JsonObject jsonObject) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle("更新:");
+ builder.setMessage("检测到有新版本,是否更新?");
+ builder.setIcon(R.mipmap.ic_launcher);
+ builder.setCancelable(true);
+ //设置正面按钮
+ builder.setPositiveButton("更新", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ JGYUtils.getInstance().installAPK(jsonObject);
+ dialog.dismiss();
}
- Log.e("fht", "已是最新版本");
- }
+ });
+ //设置反面按钮
+ builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ builder.show();
+ }
+
+ @Override
+ public void getSystemSettingbegin() {
+ mPresenter.getAppLimit();
+ }
+
+ @Override
+ public void getAppLimitFinished(String packageList) {
+ mPresenter.getDeviceBatch(packageList);
+ }
+
+ @Override
+ public void getDeviceBatchFinished() {
+ mPresenter.getForceDownload();
+ }
+
+ @Override
+ public void getForceDownloadFinished() {
+ mPresenter.getBrowserList();
+ }
+
+ @Override
+ public void getBrowserListFinished() {
+ mPresenter.getBrowserBookmarks();
+ }
+
+ @Override
+ public void getBrowserBookmarksFinished() {
+ mPresenter.getDesktopIcon();
+ }
+
+ @Override
+ public void getDesktopIconFinished() {
+ mPresenter.getAppAutoStartUpdateAndNet();
+ }
+
+ @Override
+ public void getAppAutoStartUpdateAndNetFinished() {
+ mPresenter.getAppIDControl();
+ }
+
+ @Override
+ public void getAppIDControlFinished() {
+ mPresenter.setAppinsideWeb();
+ }
+
+ @Override
+ public void setAppinsideWebFinished() {
+ mPresenter.setSystemSetting();
+ }
+
+ @Override
+ public void setSystemSettingFinished() {
+ netWorkIsRunning = false;
+ Log.e(TAG, "SettingFinished: " + (System.currentTimeMillis() - timeMillis) + " ms");
+ }
+
+ @Override
+ public void setScreenLockStateFinished(boolean locked, String tips) {
}
- private Runnable toast = new Runnable() {
+ @Override
+ public void getDefaultDesktopFinished() {
- @Override
- public void run() {
- ToastUtil.show("已是最新版本");
- }
- };
-
- private int getBatteryLevel() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
- BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
- return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
- } else {
- Intent intent = new ContextWrapper(MainActivity.this).
- registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
- return (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) /
- intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
- }
}
+
+
@Override
protected void onStop() {
super.onStop();
@@ -826,1190 +355,110 @@ public class MainActivity extends AppCompatActivity implements AMapLocationListe
protected void onResume() {
super.onResume();
isForeground = true;
- Intent allIntent = new Intent();
- allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION);
- sendBroadcast(allIntent);
-// loadHeadImg(Configure.HTTP_TAG_HOME_PAGE_URL);
- getLockedState(mHandler);
-// MyApplication.getInstance().getWhitePackageList();
- getInfo(mHandler);
-// CmdUtil.execute(" screencap -p /sdcard/" + "screen" + System.currentTimeMillis() + ".png");
+ mPresenter.getStudesInfo();
}
- private void getInfo(final Handler handler) {
- OkGo.post(URLAddress.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:" + e.getMessage());
- handler.sendEmptyMessage(-2);
- }
-
- });// 请求方式和请求url
- }
-
-// private void loadHeadImg(String URL) {
-// BrankPicApi brankPicApi = Network.getBrankPicApi();
-// brankPicApi.getBrankPicApi(Configure.HTTP_KEY, Utils.getSerial(), "1")
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer() {
-// @Override
-// public void onSubscribe(Disposable d) {
-//
-// }
-//
-// @Override
-// public void onNext(CommonPicBean projectPicBean) {
-// paraData(projectPicBean);
-// Log.e("mjsheng", "brankPicApi---" + projectPicBean.toString());
-// }
-//
-// @Override
-// public void onError(Throwable e) {
-//// Utils.showToast(MainActivity.this, "网络出错!");
-// Log.e("mjsheng", "brankPicApi---error----" + e.getMessage());
-//
-// }
-//
-// @Override
-// public void onComplete() {
-//
-// }
-// });
-//
-//
-// }
-
-// private void paraData(CommonPicBean categoryPicBean) {
-// int code = categoryPicBean.getCode();
-// switch (code) {
-// case 200:
-// final List data = categoryPicBean.getData();
-//// if (data != null && data.size() > 0) {
-//// List list = new ArrayList<>();
-//// for (int i = 0; i < data.size(); i++) {
-//// list.add(data.get(i).getImg());
-//// }
-//// webBannerAdapter = new WebBannerAdapter(getActivity(), list);
-//// webBannerAdapter.setOnBannerItemClickListener(new BannerLayout.OnBannerItemClickListener() {
-//// @Override
-//// public void onItemClick(int position) {
-//// loadProjectByType(Configure.HTTP_TAG_BRAND_DETAILS_URL, data.get(position).getId(), data.get(position).getName());
-//// }
-//// });
-//// recyclerBanner.setAdapter(webBannerAdapter);
-//// mAdapter = new TopRecyclerViewAdapter(getActivity(), "home", list, new TopRecyclerViewAdapter.HorizontalScrollViewListener() {
-//// @Override
-//// public void onClick(String iconUrl, int position) {
-//// sound.playSoundEffect();
-//// loadProjectByType(Configure.HTTP_TAG_BRAND_DETAILS_URL, data.get(position).getId(), data.get(position).getName());
-//// }
-//// });
-//// mTopRlView.setAdapter(mAdapter);
-//// } else {
-//// // Utils.showToast(getContext(), "数据为空!");
-//// Log.e("mjsheng", "推荐页轮播图为空!");
-//// }
-// break;
-// case -200:
-// paraError(categoryPicBean.getMsg());
-// break;
-// }
-// }
-
-// private void paraError(String msg) {
-// switch (msg) {
-// case "没有找到SN码":
-// ToastUtil.show(msg);
-// break;
-// default:
-// ToastUtil.show(msg);
-// break;
-// }
-// }
-
@Override
protected void onDestroy() {
super.onDestroy();
-
+ mPresenter.detachView();
}
-
- @Override
- public void finish() {
- super.finish();
- }
-
-// private void getAppInfo() {
-// ArrayList appList = new ArrayList<>(); //用来存储获取的应用信息数据
-// List packages = getPackageManager().getInstalledPackages(0);
-//
-// for (int i = 0; i < packages.size(); i++) {
-// PackageInfo packageInfo = packages.get(i);
-// if (ApkUtils.systemapp.contains(packageInfo.packageName)) {
-// continue;
-// }
-// UploadAppInfo uploadAppInfo = new UploadAppInfo();
-// uploadAppInfo.setApp_name(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
-// uploadAppInfo.setPackage_name(packageInfo.packageName);
-// uploadAppInfo.setId(i);
-// String firstInstallTime = Utils.transferLongToDate(packageInfo.firstInstallTime);
-// uploadAppInfo.setInstall_time(firstInstallTime);
-// uploadAppInfo.setVersionCode(String.valueOf(packageInfo.versionCode));
-// // Log.e("mjsheng", "------------------" + uploadAppInfo);
-// if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
-// } else {
-// //非系统应用
-// appList.add(uploadAppInfo);
-// }
-//
-//
-// }
-//
-// // Log.e("mjsheng", "UploadAppInfo========" + appList.toString());
-//
-// Gson gson = new Gson();
-// String jsonString = gson.toJson(appList);
-// Log.e("mjsheng", "json========" + jsonString);
-//
-// UploadAppInfoApi uploadAppInfoApi = Network.getUploadAppInfoApi();
-// uploadAppInfoApi.getUploadAppInfoApi(Configure.HTTP_KEY, Utils.getSerial(), jsonString)
-// .subscribeOn(Schedulers.io())
-// .observeOn(AndroidSchedulers.mainThread())
-// .subscribe(new Observer() {
-// @Override
-// public void onSubscribe(Disposable d) {
-//
-// }
-//
-// @Override
-// public void onNext(ResponseBody responseBody) {
-// try {
-// Log.e("mjhseng", "上传的结果" + responseBody.string());
-// } catch (IOException e) {
-// e.printStackTrace();
-// }
-// }
-//
-// @Override
-// public void onError(Throwable e) {
-// Log.e("mjsheng", "UploadAppInfoApi=onError:");
-// }
-//
-// @Override
-// public void onComplete() {
-//
-// }
-// });
-// }
-
-
- private void initJpush() {
- JPushInterface.init(this);
- setAlias();
-
- String rid = JPushInterface.getRegistrationID(MainActivity.this);
- if (!rid.isEmpty()) {
-// ToastUtil.debugShow("RegId:" + rid);
- Log.e("jiguang", "RegId:" + rid);
- } else {
-// ToastUtil.show("Get registration fail, JPush init failed!");
-// Toast.makeText(this, "Get registration fail, JPush init failed!", Toast.LENGTH_SHORT).show();
+ @OnClick({R.id.back, R.id.chkupd})
+ public void onClick(View view) {
+ switch (view.getId()) {
+ case R.id.back:
+ lazyExit();
+ break;
+ default:
+ break;
}
- JPushInterface.getAlias(this, new Random().nextInt(100));
-// JPushInterface.setAlias(this, Utils.getSerial(), new TagAliasCallback() {
-// @Override
-// public void gotResult(int i, String s, Set set) {
-// if (set == null) {
-// Log.e("mjhseng", "set is null");
-// } else {
-// Log.e("mjhseng", "set ---" + set.toString());
-// }
-// Log.e("JPushInterface", s + "---" + i + "---");
-// if (i == 0) {
-// Log.e("JPushInterface", "JPush绑定成功");
-// } else if (i == 6001) {
-// Log.e("JPushInterface", "无效的设置,用户名为空");
-// } else if (i == 6002) {
-// Log.e("JPushInterface", "设置超时,请重试");
-// timerImitate();
-// } else if (i == 6011) {
-// Log.e("JPushInterface", "短时间内操作过于频繁");
-// } else if (i == 996) {
-// Log.e("JPushInterface", "网络连接断开");
-// }
-// }
-// });
-
}
- //重新设置jpush
- private void timerImitate() {
- Observable.timer(10000, TimeUnit.MILLISECONDS)
- .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
- .subscribe(new Action1() {
+ private void setStoreUpdateListener(View view){
+ ObservableOnSubscribe mObservableOnSubscribe = new ObservableOnSubscribe() {
+ @Override
+ public void subscribe(@NonNull ObservableEmitter emitter) throws Exception {
+ view.setOnClickListener(new View.OnClickListener() {
@Override
- public void call(Long aLong) {
- Log.e("JPushInterface", "JPushInterface重新加载");
- initJpush();//初始化极光推送
- HTTPInterface.setJpushTags(MainActivity.this);
+ public void onClick(View v) {
+ if (updateApp) {
+ ToastUtil.show("你已经检查过更新,请稍后再试");
+ } else {
+ emitter.onNext(view);
+ }
}
});
+ }
+ };
+ Observer mObserver = new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("mObserver", "onSubscribe");
+ }
+
+ @Override
+ public void onNext(@NonNull View view) {
+ Log.e("mObserver", "onNext");
+ ToastUtil.show("正在检查更新");
+ mPresenter.buttonCheckUpdate(bt_checkupdate);
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("mObserver", "onError");
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("mObserver", "onComplete");
+ }
+ };
+
+ io.reactivex.Observable.create(mObservableOnSubscribe)
+ .throttleFirst(10, TimeUnit.SECONDS)
+ //这句很关键,这是RxJava中的操作符,在规定时间内观察者不在接收被观察者发送的事件
+ .subscribe(mObserver);
}
-
- // 用来计算返回键的点击间隔时间
- private long exitTime = 0;
-
- @Override
- public boolean onKeyDown(int keyCode, KeyEvent event) {
- if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
- lazyExit();
- return true;
- }
-
- return super.onKeyDown(keyCode, event);
- }
+ private long mPreClickTime;
private void lazyExit() {
if (System.currentTimeMillis() - mPreClickTime > 1000) {
- ToastUtils.showShort("再按一次,退出");
+ ToastUtil.show("再按一次,退出");
mPreClickTime = System.currentTimeMillis();
} else {
finish();
}
}
- private void getAppLimitApi() {
- AppLimitApi appLimitApi = Network.getAppLimitApi();
- appLimitApi.getAppLimitApi(URLAddress.HTTP_KEY, Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(ResponseBody responseBody) {
- try {
- String responString = responseBody.string();
- Log.e("mjhseng", responString);
- JSONObject jsonObject = new JSONObject(responString);
- Integer code = jsonObject.optInt("code");
- switch (code) {
- case 200:
- JSONObject data = jsonObject.getJSONObject("data");
- String result = data.optString("result");
- writeAppPackageList(result);
- break;
- default:
- Log.e("mjhseng", "getAppLimitApi---code is -200");
- break;
- }
- } catch (Exception e) {
- Log.e("mjhseng", "getAppLimitApi---woring----" + e.getMessage());
- e.printStackTrace();
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("mjsheng", "getAppLimitApi=onError:");
- }
-
- @Override
- public void onComplete() {
-
- }
- });
+ //jiguang
+ public void registerMessageReceiver() {
+ mMessageReceiver = new MessageReceiver();
+ IntentFilter filter = new IntentFilter();
+ filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ filter.addAction(MESSAGE_RECEIVED_ACTION);
+ LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter);
}
- private void writeAppPackageList(String result) {
- String appstore = "com.jiaoguanyi.appstore";
- String store = "com.jiaoguanyi.store";
- String info = "com.info.sn";
-// String iflytek = "com.estrongs.android.pop";
- String jgy1 = "com.uiuios.jgy1";
- String jgy2 = "com.uiuios.jgy2";
- if (!TextUtils.isEmpty(result)) {
- LogUtils.e(result);
- if (!result.contains(appstore)) {
- result = result + "," + appstore;
- }
- if (!result.contains(store)) {
- result = result + "," + store;
- }
- if (!result.contains(jgy1)) {
- result = result + "," + jgy1;
- }
- if (!result.contains(jgy2)) {
- result = result + "," + jgy2;
- }
- if (!result.contains(info)) {
- result = result + "," + info;
- }
- //人脸识别
- boolean b = Settings.System.putString(getContentResolver(), "qch_app_forbid", result);
- Log.e("mjsheng", "qch_app_forbid is :" + b + Settings.System.getString(getContentResolver(), "qch_app_forbid"));
-
- } else {
- Log.e("mjsheng", "writeAppPackageList is null:");
-
- }
- }
-
- private void getDeselectID() {
- DeselectIDApi deselectIDApi = Network.getDeselectIDApi();
- deselectIDApi.getDeselectIDApi(URLAddress.HTTP_KEY, Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
-
- }
-
- @Override
- public void onNext(ResponseBody responseBody) {
- try {
- String responString = responseBody.string();
- LogUtils.e("mjhseng", "应用联网管控::" + responString);
- JSONObject jsonObject = new JSONObject(responString);
- Integer code = jsonObject.optInt("code");
- switch (code) {
- case 200:
- JSONObject data = jsonObject.getJSONObject("data");
- String ids = data.optString("ids");
- String packages = data.optString("package");
- writeDeselectIDtoSystem(ids, packages);
- break;
- default:
- Log.e("mjhseng", "getDeselectID---code is -200");
- break;
- }
- } catch (Exception e) {
- Log.e("mjhseng", "getDeselectID---woring----" + e.getMessage());
- e.printStackTrace();
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("mjsheng", "DeselectIDApi=onError:");
- }
-
- @Override
- public void onComplete() {
-
- }
- });
- }
-
-
- private void autoUpdate(ResponseBody responseBody) {
- try {
- String responString = responseBody.string();
- JSONObject object = new JSONObject(responString);
- Integer code = object.optInt("code");
- if (code == 200) {
- JSONObject jsonObject = object.getJSONObject("data");
- String url = jsonObject.optString("url");
- int version_code = jsonObject.optInt("version_code");
- LogUtils.e(url + "-----------" + version_code + "---------" + AppUtils.getAppVersionCode());
-
- if (version_code > AppUtils.getAppVersionCode()) {
- Aria.download(this)
- .load(url) //读取下载地址
- .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(url) + ".apk", true)
- .setExtendField(BuildConfig.APPLICATION_ID)
- .create(); //启动下载}}
- }
- }
- } catch (Exception e) {
- Log.e("mjhseng", "UpdateApi---woring----" + e.getMessage());
- e.printStackTrace();
- }
- }
-
- private void getDeselectBrowerID() {
- DeselectBrowserIDApi deselectBrowserIDApi = Network.getDeselectBrowserIDApi();
- deselectBrowserIDApi.getDeselectBrowserIDApi(URLAddress.HTTP_KEY, Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("mjhseng", "getDeselectBrowerID---onSubscribe");
-
- }
-
- @Override
- public void onNext(ResponseBody responseBody) {
- try {
- String responString = responseBody.string();
- LogUtils.e("mjhseng", "浏览器ID管控::" + responString);
- JSONObject jsonObject = new JSONObject(responString);
- Integer code = jsonObject.optInt("code");
- switch (code) {
- case 200:
- JSONObject data = jsonObject.getJSONObject("data");
- String ids = data.optString("ids");
- writeDeselectBrowserIDtoSystem(ids);
- break;
- default:
- Log.e("mjhseng", "getDeselectBrowerID---code is -200");
- break;
- }
- } catch (Exception e) {
- Log.e("mjhseng", "getDeselectBrowerID---wroing----" + e.getMessage());
- e.printStackTrace();
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("mjsheng", "getDeselectBrowerID=onError:");
- }
-
- @Override
- public void onComplete() {
- Log.e("mjhseng", "getDeselectBrowerID---onComplete");
- }
- });
- }
-
- private void getNetAndLaunchSetting() {
- NetAndLaunchApi netAndLaunchApi = Network.getNetAndLaunchApi();
- netAndLaunchApi.getNetAndLaunchApi(URLAddress.HTTP_KEY, Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("mjhseng", "getNetAndLaunchSetting---onSubscribe");
-
- }
-
- @Override
- public void onNext(NetAndLaunchBean netAndLaunchBean) {
- switch (netAndLaunchBean.getCode()) {
- case 200:
- setNetAndlaunch(netAndLaunchBean);
- break;
- default:
-// ToastUtils.showShort(netAndLaunchBean.getMsg());
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("mjsheng", "getNetAndLaunchSetting=onError:");
- }
-
- @Override
- public void onComplete() {
- Log.e("mjhseng", "getNetAndLaunchSetting---onComplete");
- }
- });
- }
-
- private void getForceDownload() {
- ForceDownloadApi forceDownloadApi = Network.getForceDownloadApi();
- forceDownloadApi.getForceDownloadApi(URLAddress.HTTP_KEY, Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
- Log.e("getForceDownload", "forceDownloadApi---onSubscribe");
-
- }
-
- @Override
- public void onNext(ForceDownloadBean forceDownloadBean) {
- switch (forceDownloadBean.getCode()) {
- case 200:
- Log.e("getForceDownload", "isDownloading=" + MyApplication.getInstance().isDownloading());
- MyApplication.getInstance().checkIsDownloading();
- if (!MyApplication.getInstance().isDownloading()) {
- Aria.download(this).removeAllTask(true);
- forceDownload(forceDownloadBean.getData());
- } else {
- Aria.download(this).resumeAllTask();
- }
- break;
- case -200:
- boolean qch_force_app = Settings.System.putString(MainActivity.this.getContentResolver(), "qch_force_app", "invalid");
- Log.e("fht", "qch_force_app:" + qch_force_app);
- break;
- default:
- LogUtils.e("getForceDownload is error:" + forceDownloadBean.getMsg());
- break;
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("getForceDownload", "forceDownloadApi=onError:");
- }
-
- @Override
- public void onComplete() {
- Log.e("getForceDownload", "forceDownloadApi---onComplete");
- }
- });
- }
-
- // private void forceDownload(List data) {
-// if (data == null || data.size() <= 0) {
-// return;
-// }
-// for(int i=0;i data) {
- if (data == null || data.size() <= 0) {
- return;
- }
- getSelfDownload(data);
- List list = new ArrayList<>();
- for (int i = 0; i < data.size(); i++) {
- ForceDownloadData forceDownloadData = data.get(i);
- String app_name = forceDownloadData.getApp_name();
- String app_package = forceDownloadData.getApp_package();
- String app_url = forceDownloadData.getApp_url();
- com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
- jsonObject.put("app_name", app_name);
- jsonObject.put("app_package", app_package);
- int app_version_code = forceDownloadData.getApp_version_code();
- Log.e("fht ", "packageName=" + app_package + ",URL= " + app_url + ",app_version_code=" + app_version_code);
- if (data.get(i).getApp_package().equals("com.jiaoguanyi.appstore")) {
- continue;//为自身的跳过下载
- }
- if (!list.contains(app_package)) {
- list.add(app_package);
- }
- PackageManager pm = getPackageManager();
- PackageInfo packageInfo = null;
+ public static class MessageReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
try {
- packageInfo = pm.getPackageInfo(app_package, 0);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- Log.e("fht", "forceDownload=" + e.getMessage());
- }
- if (packageInfo != null) {
- long appVersionCode;
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
- appVersionCode = packageInfo.getLongVersionCode();
- } else {
- appVersionCode = packageInfo.versionCode;
+ if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
+ String messge = intent.getStringExtra(KEY_MESSAGE);
+ String extras = intent.getStringExtra(KEY_EXTRAS);
+ StringBuilder showMsg = new StringBuilder();
+ showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
+ if (!ExampleUtil.isEmpty(extras)) {
+ showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
+ }
+// setCostomMsg(showMsg.toString());
}
- if (app_version_code > appVersionCode) {
- Log.e("fht ", "download URL " + app_url);
-// Aria.download(this)
-// .load(app_url) //读取下载地址
-// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(app_package) + ".apk", true)
-// .setExtendField(jsonObject.toJSONString())
-// .create(); //启动下载}
- Utils.ariaDownload(this, app_url, jsonObject);
- }
- } else {
- Log.e("fht ", "download URL " + app_url);
-// if (!SaveListUtils.isDownLoading(app_package)) {
-// Aria.download(this)
-// .load(app_url) //读取下载地址
-// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(app_package) + ".apk", true)
-// .setExtendField(jsonObject.toJSONString())
-// .create(); //启动下载}
- Utils.ariaDownload(this, app_url, jsonObject);
+ } catch (Exception e) {
-// SaveListUtils.addDownLoadList(app_package);
-// }
}
}
- SaveListUtils.setList(list);
- SaveListUtils.sendForceAPP(this);
- }
-
-
- private void getSelfDownload(List forceDownloadDataList) {
- for (ForceDownloadData forceDownloadData : forceDownloadDataList) {
- if ("com.jiaoguanyi.store".equals(forceDownloadData.getApp_package())) {
- if (!AppUtils.isAppInstalled("com.jiaoguanyi.store")) {
- com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
- jsonObject.put("app_name", forceDownloadData.getApp_name());
- jsonObject.put("app_package", forceDownloadData.getApp_package());
-// Aria.download(this)
-// .load(forceDownloadData.getApp_url()) //读取下载地址
-// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString("com.jiaoguanyi.store") + ".apk", true)
-// .setExtendField(jsonObject.toJSONString())
-// .create(); //启动下载}
- Utils.ariaDownload(this, forceDownloadData.getApp_url(), jsonObject);
-
- }
- } else {
-// Log.e("fht", "未上传应用");
- }
- }
- }
-
- private void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean) {
- LogUtils.e("联网和自启管控:" + netAndLaunchBean.toString());
- String net_ok = "";
- String net_not = "";
- String launch = "";
- String camera_ok = "";
- String camera_not = "";
- String upgrade_ok = "";
- String upgrade_not = "";
- String slide_ok = "";
- String slide_not = "";
-
- List data = netAndLaunchBean.getData();
- for (int i = 0; i < data.size(); i++) {
- NetAndLaunchData netAndLaunchData = data.get(i);
- String app_package = netAndLaunchData.getApp_package();
- int is_auto = netAndLaunchData.getIs_auto();
- int is_network = netAndLaunchData.getIs_network();
- int is_camera = netAndLaunchData.getIs_camera();
- int is_upgrade = netAndLaunchData.getIs_upgrade();
- int is_slide = netAndLaunchData.getIs_slide();
-
-
- if (is_auto == 1) {
- launch += app_package + ",";
- }
- if (is_network == 1) {
- net_ok += app_package + ",";
- } else {
- net_not += app_package + ",";
- }
-
- if (is_camera == 1) {
- camera_ok += app_package + ",";
- } else {
- camera_not += app_package + ",";
- }
- if (is_upgrade == 1) {
- upgrade_ok += app_package + ",";
- } else {
- upgrade_not += app_package + ",";
- }
- if (is_slide == 1) {
- slide_ok += app_package + ",";
- } else {
- slide_not += app_package + ",";
- }
- }
-
-
- if (!TextUtils.isEmpty(launch)) {
- launch = launch.substring(0, launch.length() - 1);
- }
- if (!TextUtils.isEmpty(net_ok)) {
- net_ok = net_ok.substring(0, net_ok.length() - 1);
- }
- if (!TextUtils.isEmpty(net_not)) {
- net_not = net_not.substring(0, net_not.length() - 1);
- }
- if (!TextUtils.isEmpty(camera_ok)) {
- camera_ok = camera_ok.substring(0, camera_ok.length() - 1);
- }
- if (!TextUtils.isEmpty(camera_not)) {
- camera_not = camera_not.substring(0, camera_not.length() - 1);
- }
- if (!TextUtils.isEmpty(upgrade_ok)) {
- upgrade_ok = upgrade_ok.substring(0, upgrade_ok.length() - 1);
- }
- if (!TextUtils.isEmpty(upgrade_not)) {
- upgrade_not = upgrade_not.substring(0, upgrade_not.length() - 1);
- }
- if (!TextUtils.isEmpty(slide_ok)) {
- slide_ok = slide_ok.substring(0, slide_ok.length() - 1);
- }
- if (!TextUtils.isEmpty(slide_not)) {
- slide_not = slide_not.substring(0, slide_not.length() - 1);
- boolean writeSucceed = Settings.System.putString(this.getContentResolver(), "qch_disable_slide", slide_not);
- Log.e("fht", "qch_disable_slide=" + writeSucceed + ":" + slide_not);
- } else {
- boolean writeSucceed = Settings.System.putString(this.getContentResolver(), "qch_disable_slide", "Invalid");
- Log.e("fht", "qch_disable_slide ok=" + writeSucceed + ":" + slide_ok);
- }
-
- Utils.writeDisableUpdateList(this, upgrade_not.split(","), upgrade_ok.split(","));
-
- LogUtils.e("launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not);
- boolean qch_app_power_on = Settings.System.putString(MainActivity.this.getContentResolver(), "qch_app_power_on", launch);
-
-// Intent netControlIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY_DIS);
-// netControlIntent.putExtra("package_name", net_not);
-// sendBroadcast(netControlIntent);
-//
-// Intent netControlNotIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY);
-// netControlNotIntent.putExtra("package_name", net_ok);
-// sendBroadcast(netControlNotIntent);
- if (!net_not.equals("")) {
- String[] bans = net_not.split(",");
- Settings.System.putString(getContentResolver(), "qch_jgy_network_disallow", net_not);
- Log.e("fht", "ban::" + net_not);
-
- }
- MyApplication.getInstance().setFinished(true);
- if (!net_ok.equals("")) {
- String[] nots = net_ok.split(",");
- Settings.System.putString(getContentResolver(), "qch_jgy_network_allow", net_ok);
- Log.e("fht", "not::" + net_ok);
- }
-
-
-// Intent intent2 = new Intent("qch_camera_forbid");
-// intent2.putExtra("camera_package_name", camera_not).setPackage("com.android.settings");
-// sendBroadcast(intent2);
-// Intent intent1 = new Intent("qch_camera_open");
-// intent1.putExtra("camera_package_name", camera_ok).setPackage("com.android.settings");
-// sendBroadcast(intent1);
- }
-
-
- private void writeDeselectBrowserIDtoSystem(String ids) {
- if (!TextUtils.isEmpty(ids)) {
- boolean deselectBrowserArray = Settings.System.putString(getContentResolver(), "DeselectBrowserArray", ids);
- Log.e("SystemSetting", "DeselectBrowserArray---------" + deselectBrowserArray);
-
-
- } else {
- Log.e("mjsheng", "writeDeselectBrowserIDtoSystem is null:");
-
- }
- }
-
- //应用id管控
- private void writeDeselectIDtoSystem(String s1, String result) {
- if (!TextUtils.isEmpty(s1) && !TextUtils.isEmpty(result)) {
- String appstore = "com.jiaoguanyi.appstore";
- String store = "com.jiaoguanyi.store";
- LogUtils.e(result);
- if (!result.contains(appstore)) {
- result = result + "," + appstore;
- }
- if (!result.contains(store)) {
- result = result + "," + store;
- }
- String olddeselectViewArray = Settings.System.getString(this.getContentResolver(), "qch_app_forbid_id");
- Log.e("SystemSetting", "olddeselectViewArray---------" + olddeselectViewArray);
- Settings.System.putString(this.getContentResolver(), "qch_app_forbid_id", result);
- Settings.System.putString(this.getContentResolver(), "DeselectViewArray", s1);
- Log.e("qch_app_forbid_id", "qch_app_forbid_id---------" + result);
- Log.e("SystemSetting", "deselectViewArray---------" + s1);
- } else {
- Log.e("mjsheng", "writeDeselectIDtoSystem is null:");
- Settings.System.putString(this.getContentResolver(), "DeselectViewArray", "Invalid");
- }
- }
-
- private void getSystemSetting() {
- final SystemSettingApi systemSettingApi = Network.getSystemSettingApi();
- systemSettingApi.getSystemSettingApi(URLAddress.HTTP_KEY, Utils.getSerial())
- .subscribeOn(Schedulers.io())
- .observeOn(AndroidSchedulers.mainThread())
- .subscribe(new Observer() {
- @Override
- public void onSubscribe(Disposable d) {
- }
-
- @Override
- public void onNext(ResponseBody responseBody) {
- try {
- // Log.e("mjsheng", "systemSettingBean::" + systemSettingBean);
- String responString = responseBody.string();
- LogUtils.e("mjsheng", "系统管控::" + responString);
- JSONObject jsonObject = new JSONObject(responString);
- Integer code = jsonObject.optInt("code");
- switch (code) {
- case 200:
- JSONObject data = jsonObject.getJSONObject("data");
- SettingSysData(data);
- break;
- default:
- Log.e("mjhseng", "getSystemSetting---code is -200");
- break;
- }
- } catch (IOException e) {
- e.printStackTrace();
- Log.e("initmjsheng", "1getSystemSetting---IOException----" + e.getMessage());
- } catch (JSONException e) {
- e.printStackTrace();
- Log.e("initmjsheng", "1getSystemSetting---JSONException----" + e.getMessage());
- }
- }
-
- @Override
- public void onError(Throwable e) {
- Log.e("mjsheng", "getSystemSetting=onError:");
- }
-
- @Override
- public void onComplete() {
- Log.e("mjhseng", "getSystemSetting---onComplete");
- }
- });
- }
-
- private BluetoothAdapter mBluetoothAdapter;
-
- private void SettingSysData(JSONObject data) {
- SPUtils.put(MainActivity.this, "first_connect", 1);
- SysSettingUtils.setSystemSetting(MainActivity.this, data.toString());
-
-//// try {
-// int setting_call = changeNum(data.optInt("setting_call"));
-// boolean qch_call_forbid = Settings.System.putInt(getContentResolver(), "qch_call_forbid", setting_call);
-// Log.e("SystemSetting", "qch_call_forbid---------" + qch_call_forbid);
-//
-// int setting_phone = changeNum(data.optInt("setting_phone"));
-// boolean qch_white_list_on = Settings.System.putInt(getContentResolver(), "qch_white_list_on", setting_phone);
-// Log.e("SystemSetting", "qch_white_list_on---------" + qch_white_list_on);
-//
-// String setting_phones = data.optString("setting_phones");
-// boolean qch_white_list_Array = Settings.System.putString(getContentResolver(), "qch_white_list_Array", setting_phones);
-// // ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+qch_white_list_Array+"---"+qch_call_forbid);
-// Log.e("SystemSetting", "qch_white_list_Array---------" + qch_white_list_Array + "---" + setting_phones);
-//
-// int setting_memory = changeNum(data.optInt("setting_memory"));
-// boolean qch_sdcard_forbid_on = Settings.System.putInt(getContentResolver(), "qch_sdcard_forbid_on", setting_memory);
-// Log.e("SystemSetting", "qch_sdcard_forbid_on---------" + qch_sdcard_forbid_on);
-//
-//
-// //USB数据功能管控
-// //仅充电:usb_charge
-// //MTP模式:usb_mtp
-// //Midi模式:usb_midi
-// String setting_usb = data.optString("setting_usb");
-// if (!BuildConfig.DEBUG) {
-// boolean qch_usb_choose = Settings.System.putString(getContentResolver(), "qch_usb_choose", setting_usb);
-// Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose);
-// String usbStatus = "";
-// switch (setting_usb) {
-// case "usb_charge":
-// usbStatus = "qch_action_usb_usb_charge";
-// break;
-// case "usb_mtp":
-// usbStatus = "qch_action_usb_usb_mtp";
-// break;
-// case "usb_midi":
-// usbStatus = "qch_action_usb_usb_midi";
-// break;
-//
-// }
-// Intent usbIntent = new Intent(usbStatus).setPackage("com.android.settings");
-// sendBroadcast(usbIntent);
-// }
-//
-//
-// //otg开关
-//// int setting_otg = changeNum(data.optInt("setting_otg"));
-//// Log.e("SystemSetting", "setting_otg---------" + setting_otg);
-//// String otgStatus = "";
-//// switch (setting_otg) {
-//// case 0:
-//// otgStatus = "qch_otg_open";
-//// break;
-//// case 1:
-//// otgStatus = "qch_otg_forbid";
-//// break;
-//// }
-//// Intent otgIntent = new Intent(otgStatus);
-//// sendBroadcast(otgIntent);
-//
-// //蓝牙开关
-// int setting_bht = changeNum(data.optInt("setting_bht"));//总开关
-// int setting_bhtvideo = changeNum(data.optInt("setting_bhtvideo"));//蓝牙音频开关
-// int setting_bluetooth = changeNum(data.optInt("setting_bluetooth"));//蓝牙传输开关
-//
-// boolean qch_bht_forbid_on = Settings.System.putInt(getContentResolver(), "qch_bht_forbid_on", setting_bht);//写入系统数据库
-// Log.e("SystemSetting", "qch_bht_forbid_on:" + qch_bht_forbid_on);
-// if (qch_bht_forbid_on) {//成功
-// if (null == mBluetoothAdapter) {
-// mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//获取默认蓝牙适配器
-// }
-// if (setting_bht == 0) {//蓝牙总开关开启
-// String setting_context = data.optString("setting_context");//
-// if (setting_bhtvideo == 0) {
-// if (null != setting_context && !setting_context.equals("") && !setting_context.equals(" ") && !setting_context.equals("null")) {
-// Log.e("SystemSetting", "setting_context:" + setting_context);
-// Settings.System.putString(getContentResolver(), "qch_bhtvideo_forbid_on", setting_context);
-// } else {
-// Settings.System.putString(getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
-// }
-// } else if (setting_bhtvideo == 1) {
-// Settings.System.putString(getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
-// }
-// Settings.System.putInt(getContentResolver(), "qch_bt_forbid_on", setting_bluetooth);
-// } else {
-// mBluetoothAdapter.disable();//设置关闭时关闭蓝牙
-// }
-//
-// }
-//
-// //热点
-//// ConnectivityManager mConnectivityManager =(ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-//// mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
-//// try {
-//// Method method = mConnectivityManager.getClass().getMethod("stopTethering", Integer.TYPE);
-//// method.invoke(mConnectivityManager, 0);
-//// } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
-//// e.printStackTrace();
-//// }
-//
-//// ConnectivityManager connManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
-////
-//// Field iConnMgrField = null;
-//// try {
-//// iConnMgrField = connManager.getClass().getDeclaredField("mService");
-//// iConnMgrField.setAccessible(true);
-//// Object iConnMgr = iConnMgrField.get(connManager);
-//// Class> iConnMgrClass = Class.forName(iConnMgr.getClass().getName());
-////
-////// if(isEnable){
-////// Method startTethering = iConnMgrClass.getMethod("startTethering", int.class, ResultReceiver.class, boolean.class,String.class);
-////// startTethering.invoke(iConnMgr, 0, null, true,context.getPackageName());
-////// }else{
-//// Method startTethering = iConnMgrClass.getMethod("stopTethering", int.class, String.class);
-//// startTethering.invoke(iConnMgr, 0, getPackageName());
-////// }
-////
-//// } catch (NoSuchFieldException e) {
-//// e.printStackTrace();
-//// } catch (NoSuchMethodException e) {
-//// e.printStackTrace();
-//// } catch (IllegalAccessException e) {
-//// e.printStackTrace();
-//// } catch (InvocationTargetException e) {
-//// e.printStackTrace();
-//// } catch (ClassNotFoundException e) {
-//// e.printStackTrace();
-//// }
-//
-// int setting_hotspot = changeNum(data.optInt("setting_hotspot"));
-// if (setting_hotspot == 1) {
-// Intent intent = new Intent();
-// intent.setAction("qch_hotspot_close");
-// intent.setPackage("com.android.settings");
-// sendStickyBroadcast(intent);
-// }
-// boolean qch_hotspot_forbid_on = Settings.System.putInt(getContentResolver(), "qch_hotspot_forbid_on", setting_hotspot);//写入系统数据库
-// Log.e("SystemSetting", "qch_hotspot_forbid_on---------" + setting_hotspot);
-// Log.e("SystemSetting", "qch_hotspot_forbid_on---------" + qch_hotspot_forbid_on);
-//
-// //系统导航条显示开关
-// int setting_navigation = changeNum(data.optInt("setting_navigation"));
-// boolean qch_hide_navigationBar = Settings.System.putInt(getContentResolver(), "qch_hide_NavigationBar", setting_navigation);
-// Log.e("SystemSetting", "qch_hide_navigationBar---------" + qch_hide_navigationBar);
-//
-// String navigationStatus = "";
-// switch (setting_navigation) {
-// case 0:
-// navigationStatus = "qch_show_NavigationBar";
-// break;
-// case 1:
-// navigationStatus = "qch_hide_NavigationBar";
-// break;
-//
-// }
-// Intent navIntent = new Intent(navigationStatus).setPackage("com.android.systemui");
-// sendBroadcast(navIntent);
-//
-//
-// //状态栏显示开关
-// int setting_statusbar = changeNum(data.optInt("setting_statusbar"));
-// int oldNum = Settings.System.getInt(MainActivity.this.getContentResolver(), "qch_hide_statusBar", 0);
-// if (oldNum != setting_statusbar) {
-// boolean qch_hide_statusBar = Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_hide_statusBar", setting_statusbar);
-// Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
-// String statusbarStatus = "";
-// switch (setting_statusbar) {
-// case 0:
-// statusbarStatus = "qch_show_statusBar";
-// break;
-// case 1:
-// statusbarStatus = "qch_hide_statusBar";
-// break;
-// }
-// Intent statusIntent = new Intent(statusbarStatus).setPackage("com.android.systemui");
-// MainActivity.this.sendBroadcast(statusIntent);
-// }
-//
-// //摄像头开关
-// int setting_camera = changeNum(data.optInt("setting_camera"));
-// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_camera", setting_camera);
-//// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.mediatek.camera");
-// Log.e("SystemSetting", "setting_camera---------" + setting_camera);
-// String cameraStatus = "";
-// switch (setting_camera) {
-// case 0:
-// cameraStatus = "qch_camera_open";
-// break;
-// case 1:
-// cameraStatus = "qch_camera_forbid";
-// break;
-// }
-// Intent cameraIntent = new Intent(cameraStatus).setPackage("com.android.settings");
-// sendBroadcast(cameraIntent);
-//
-// //added:2019.12.6
-// //设置5个app的开关
-// //时钟
-// int deskclock = changeNum(data.optInt("setting_clock"));
-// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_deskclock", deskclock);
-// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.deskclock");
-// Log.e("SystemSetting", "qch_app_deskclock" + deskclock);
-// //录音机
-// int soundrecorder = changeNum(data.optInt("setting_recording"));
-// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_soundrecorder", soundrecorder);
-// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.soundrecorder");
-// Log.e("SystemSetting", "qch_app_soundrecorder" + soundrecorder);
-// //音乐
-// int music = changeNum(data.optInt("setting_music"));
-// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_music", music);
-// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.music");
-// Log.e("SystemSetting", "qch_app_music" + music);
-// //图库
-// int gallery = changeNum(data.optInt("setting_picture"));
-// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_gallery", gallery);
-// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.gallery3d");
-// Log.e("SystemSetting", "qch_app_gallery" + gallery);
-// //壁纸
-// int wallpaper = changeNum(data.optInt("setting_wallpaper"));
-// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_wallpaper", wallpaper);
-// Log.e("SystemSetting", "qch_app_wallpaper" + wallpaper);
-// //文件管理器
-// int filemanager = changeNum(data.optInt("setting_file"));
-// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_filemanager", filemanager);
-// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
-// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.mediatek.filemanager");
-// } else {
-// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.documentsui");
-// }
-// Log.e("SystemSetting", "qch_app_filemanager" + filemanager);
-//
-//// } catch (Exception e) {
-//// e.printStackTrace();
-//// Log.e("mjhseng", "SettingSysData---2error::" + e.getMessage());
-//// }
- }
-
- private int changeNum(int status) {
- int num = 1;
- switch (status) {
- case 0:
- num = 1;
- break;
- case 1:
- num = 0;
- break;
- default:
- num = 1;
- }
- return num;
- }
-
-
- @Override
- public void onLocationChanged(AMapLocation aMapLocation) {
- StringBuffer sb = new StringBuffer();
- //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明
- if (aMapLocation.getErrorCode() == 0) {
-// sb.append("定位成功" + "\n");
-// sb.append("定位类型: " + location.getLocationType() + "\n");
- sb.append("位置: " + aMapLocation.getAddress() + "\n");
-// sb.append("经 度 : " + location.getLongitude() + "\n");
-// sb.append("纬 度 : " + location.getLatitude() + "\n");
- SPUtils.put(this, "longitude", aMapLocation.getLongitude());
- SPUtils.put(this, "latitude", aMapLocation.getLatitude());
-
-// sb.append("精 度 : " + location.getAccuracy() + "米" + "\n");
-// sb.append("提供者 : " + location.getProvider() + "\n");
-//
-// sb.append("速 度 : " + location.getSpeed() + "米/秒" + "\n");
-// sb.append("角 度 : " + location.getBearing() + "\n");
- //定位完成的时间
-// sb.append("定位时间: " + amapUtils.formatUTC(location.getTime(), "yyyy-MM-dd HH:mm:ss") + "\n");
- SPUtils.put(this, "AmapAddress", aMapLocation.getAddress());
- } else {
- //定位失败
- sb.append("定位失败" + "\n");
-// sb.append("错误码:" + location.getErrorCode() + "\n");
-// sb.append("错误信息:" + location.getErrorInfo() + "\n");
-// sb.append("错误描述:" + location.getLocationDetail() + "\n");
- }
-// sb.append("***定位质量报告***").append("\n");
-// sb.append("* WIFI开关:").append(location.getLocationQualityReport().isWifiAble() ? "开启" : "关闭").append("\n");
-// sb.append("* GPS状态:").append(getGPSStatusString(location.getLocationQualityReport().getGPSStatus())).append("\n");
-// sb.append("* GPS星数:").append(location.getLocationQualityReport().getGPSSatellites()).append("\n");
-// sb.append("****************").append("\n");
-// 定位之后的回调时间
-// sb.append("回调时间: " + amapUtils.formatUTC(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss") + "\n");
- Log.e("addr", sb.toString());
- }
-
-
- /**
- * 获取GPS状态的字符串
- *
- * @param statusCode GPS状态码
- * @return
- */
- private String getGPSStatusString(int statusCode) {
- String str = "";
- switch (statusCode) {
- case AMapLocationQualityReport.GPS_STATUS_OK:
- str = "GPS状态正常";
- break;
- case AMapLocationQualityReport.GPS_STATUS_NOGPSPROVIDER:
- str = "手机中没有GPS Provider,无法进行GPS定位";
- break;
- case AMapLocationQualityReport.GPS_STATUS_OFF:
- str = "GPS关闭,建议开启GPS,提高定位质量";
- break;
- case AMapLocationQualityReport.GPS_STATUS_MODE_SAVING:
- str = "选择的定位模式中不包含GPS定位,建议选择包含GPS定位的模式,提高定位质量";
- break;
- case AMapLocationQualityReport.GPS_STATUS_NOGPSPERMISSION:
- str = "没有GPS定位权限,建议开启gps定位权限";
- break;
- }
- return str;
}
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java
new file mode 100644
index 0000000..283a9bc
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainContact.java
@@ -0,0 +1,127 @@
+package com.mjsheng.myappstore.activity;
+
+import android.view.View;
+
+import com.google.gson.JsonObject;
+import com.mjsheng.myappstore.base.BasePresenter;
+import com.mjsheng.myappstore.base.BaseView;
+
+public class MainContact {
+ public interface MainView extends BaseView {
+ void setBatchText(String text, int visibility);
+ //设置批次信息
+ void setClassText(String text, int visibility);
+ //设置班级信息
+ void setNumberText(String text, int visibility);
+ //设置学号信息
+ void setNameText(String text, int visibility);
+ //设置姓名信息
+ void setLockedState(boolean loocked);
+ //获取设备锁定状态
+ void setFirstConnect(boolean state);
+ //是否第一次联网
+ void sendMACFinished();
+ //发送mac地址
+ void updateDeviceInfoFinished();
+ //更新设备信息
+ void getSnTimeControlFinished();
+ //获取时间管控
+ void setAliasFinished();
+ //设置击关推送别名
+ void setTagsFinished();
+ //设置极光推送标签
+ void checkStoreUpdateFinished();
+ //获取应用市场更新
+ void checkTestUpdateFinished();
+ //获取测试应用更新
+ void buttonCheckUpdateFinished(boolean update, JsonObject jsonObject);
+ //手动获取设备信息更新
+ void getSystemSettingbegin();
+ //开始
+ //设置设备后台设置
+ void getAppLimitFinished(String packageList);
+ //获取可被写入的安装包名结束
+ void getDeviceBatchFinished();
+ //获取设备批次结束
+ void getForceDownloadFinished();
+ //获取强制下载apk结束
+ void getBrowserListFinished();
+ //获取浏览器上网管控设置结束
+ void getBrowserBookmarksFinished();
+ //获取浏览器书签设置管控结束
+ void getDesktopIconFinished();
+ //获取应用图标桌面可见性管控结束
+ void getAppAutoStartUpdateAndNetFinished();
+ //获取应用自启升级和网络权限管理结束
+ void getAppIDControlFinished();
+ //获取第三方应用子页面ID连网限制结束
+ void setAppinsideWebFinished();
+ //获取第三方应用内部网页跳转屏蔽结束
+ void setSystemSettingFinished();
+ //获取系统其他管控设置结束
+ /*
+ * MainService
+ * */
+ void setScreenLockStateFinished(boolean locked, String tips);
+ //设置屏幕锁状态结束
+ void getDefaultDesktopFinished();
+ //获取桌面结束
+ }
+
+ public interface Presenter extends BasePresenter {
+ void getStudesInfo();
+ //获取学生信息
+ void getLockedState();
+ //获取设备锁定状态
+ void getFirstConnect();
+ //是否第一次联网
+ void setDisableSetting();
+ //关闭所有功能
+ void sendMACAddress();
+ //发送mac地址
+ void updateDeviceInfo();
+ //更新设备信息
+ void getSnTimeControl();
+ //获取时间管控
+ void setJpushAlias();
+ //设置击关推送别名
+ void setJpushTags();
+ //设置极光推送标签
+ void checkStoreUpdate();
+ //获取应用更新
+ void buttonCheckUpdate(View view);
+ //手动获取设备信息更新
+ void checkTestUpdate();
+ //获取测试应用更新
+ void getSystemSettingbegin();
+ //开始
+ //获取设备后台设置
+ void getAppLimit();
+ //获取可被写入的安装包名
+ void getDeviceBatch(String packageList);
+ //获取设备批次
+ void getForceDownload();
+ //获取强制下载apk
+ void getBrowserList();
+ //获取浏览器上网管控设置
+ void getBrowserBookmarks();
+ //获取浏览器书签设置管控
+ void getDesktopIcon();
+ //获取应用图标桌面可见性管控
+ void getAppAutoStartUpdateAndNet();
+ //获取应用自启升级和网络权限管理
+ void getAppIDControl();
+ //获取第三方应用子页面ID连网限制
+ void setAppinsideWeb();
+ //获取第三方应用内部网页跳转屏蔽
+ void setSystemSetting();
+ //获取系统其他管控设置
+ /*
+ * MainService
+ * */
+ void getScreenLockState();
+ //获取屏幕锁状态
+ void getDefaultDesktop();
+ //获取桌面
+ }
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java b/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java
new file mode 100644
index 0000000..e11271a
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/MainPresenter.java
@@ -0,0 +1,1170 @@
+package com.mjsheng.myappstore.activity;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.View;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
+import com.arialyy.aria.core.Aria;
+import com.google.gson.Gson;
+import com.google.gson.JsonElement;
+import com.google.gson.JsonObject;
+import com.google.gson.JsonParser;
+import com.mjsheng.myappstore.BuildConfig;
+import com.mjsheng.myappstore.base.BaseApplication;
+import com.mjsheng.myappstore.bean.Appground;
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.Batch;
+import com.mjsheng.myappstore.bean.BrowserBookmarks;
+import com.mjsheng.myappstore.bean.BrowserData;
+import com.mjsheng.myappstore.bean.ForceDownloadBean;
+import com.mjsheng.myappstore.bean.NetAndLaunchBean;
+import com.mjsheng.myappstore.bean.StudentsInfo;
+import com.mjsheng.myappstore.jpush.TagAliasOperatorHelper;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
+import com.mjsheng.myappstore.network.api.newapi.UpdateDeviceInfoApi;
+import com.mjsheng.myappstore.server.MainService;
+import com.mjsheng.myappstore.utils.ApkUtils;
+import com.mjsheng.myappstore.utils.JGYUtils;
+import com.mjsheng.myappstore.utils.SPUtils;
+import com.mjsheng.myappstore.utils.SysSettingUtils;
+import com.mjsheng.myappstore.utils.TimeUtils;
+import com.mjsheng.myappstore.utils.ToastUtil;
+import com.mjsheng.myappstore.utils.Utils;
+
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Random;
+import java.util.Set;
+import java.util.concurrent.TimeUnit;
+
+import cn.jpush.android.api.JPushInterface;
+import io.reactivex.Observable;
+import io.reactivex.ObservableEmitter;
+import io.reactivex.ObservableOnSubscribe;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.annotations.NonNull;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.ResponseBody;
+
+import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.ACTION_SET;
+import static com.mjsheng.myappstore.jpush.TagAliasOperatorHelper.sequence;
+
+public class MainPresenter implements MainContact.Presenter {
+ private static final String TAG = MainPresenter.class.getSimpleName();
+ private MainContact.MainView mView;
+ private Context mContext;
+
+ public MainPresenter(Context context) {
+ this.mContext = context;
+ Log.e(TAG, "MainPresenter: " + context.getClass());
+ }
+
+ @Override
+ public void attachView(@androidx.annotation.NonNull MainContact.MainView view) {
+ this.mView = view;
+ }
+
+ @Override
+ public void detachView() {
+ this.mView = null;
+ }
+
+ /**
+ * 通过sn获取用户信息
+ */
+ @Override
+ public void getStudesInfo() {
+ setState();
+ NetInterfaceManager.getInstance()
+ .getStudesInfoObservable()
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getStudesInfo", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse studentsInfoBaseResponse) {
+ Log.e("getStudesInfo", "onNext: ");
+ if (studentsInfoBaseResponse.code == 200) {
+ String sno = studentsInfoBaseResponse.data.getSno();
+ String realname = studentsInfoBaseResponse.data.getRealname();
+ String classes = studentsInfoBaseResponse.data.getClasses();
+ String batch = studentsInfoBaseResponse.data.getBatch();
+ if (TextUtils.isEmpty(sno)) {
+ mView.setNumberText("", View.GONE);
+ } else {
+ mView.setNumberText(sno, View.VISIBLE);
+ SPUtils.put(mContext, "sno", sno);
+ }
+ if (TextUtils.isEmpty(realname)) {
+ mView.setNameText("", View.GONE);
+ } else {
+ mView.setNameText(realname, View.VISIBLE);
+ SPUtils.put(mContext, "realname", realname);
+ }
+ if (TextUtils.isEmpty(classes)) {
+ mView.setClassText("", View.GONE);
+ } else {
+ mView.setClassText(classes, View.VISIBLE);
+ SPUtils.put(mContext, "classes", classes);
+ }
+ if (TextUtils.isEmpty(batch)) {
+ mView.setBatchText("", View.GONE);
+ } else {
+ mView.setBatchText(batch, View.VISIBLE);
+ SPUtils.put(mContext, "batch", batch);
+ }
+ } else {
+ Log.e("getStudesInfo", "onNext: " + studentsInfoBaseResponse.toString());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getStudesInfo", "onError: " + e.getMessage());
+ setState();
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getStudesInfo", "onComplete: ");
+ }
+ });
+ }
+
+ private void setState() {
+ String batch = (String) SPUtils.get(mContext, "batch", "暂无信息");
+ if (TextUtils.isEmpty(batch) || batch.equalsIgnoreCase("暂无信息")) {
+ mView.setBatchText("", View.GONE);
+ } else {
+ mView.setBatchText(batch, View.VISIBLE);
+ }
+
+ String classes = (String) SPUtils.get(mContext, "classes", "暂无信息");
+ if (TextUtils.isEmpty(classes) || classes.equalsIgnoreCase("暂无信息")) {
+ mView.setClassText("", View.GONE);
+ } else {
+ mView.setClassText(classes, View.VISIBLE);
+ }
+
+ String sno = (String) SPUtils.get(mContext, "sno", "暂无信息");
+ if (TextUtils.isEmpty(sno) || sno.equalsIgnoreCase("暂无信息")) {
+ mView.setNumberText("", View.GONE);
+ } else {
+ mView.setNumberText(sno, View.VISIBLE);
+ }
+ String realname = (String) SPUtils.get(mContext, "realname", "暂无信息");
+ if (TextUtils.isEmpty(realname) || realname.equalsIgnoreCase("暂无信息")) {
+ mView.setNameText("", View.GONE);
+ } else {
+ mView.setNameText(realname, View.VISIBLE);
+ }
+ }
+
+ @Override
+ public void getLockedState() {
+ NetInterfaceManager.getInstance()
+ .getDevicesLockedStateObservable()
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getLockedState", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ Log.e("getLockedState", "onNext: ");
+ if (response.code == 200) {
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
+ int locked = jsonObject.get("lock").getAsInt();
+ Log.e("getLockedState", "locked: " + locked);
+ //后台1是锁定,底层0是锁定
+ if (locked == 1) {
+ Settings.System.putInt(mContext.getContentResolver(), "qch_unlock_ipad", 0);
+ } else {
+ SPUtils.put(mContext, "first_connect", 1);
+ SysSettingUtils.setEnableSetting(mContext);
+ Settings.System.putInt(mContext.getContentResolver(), "qch_unlock_ipad", 1);
+ }
+ mView.setLockedState(locked == 1);
+ } else if (response.code == -300) {
+ mView.setLockedState(false);
+ Log.e("getLockedState", "locked: " + false);
+ }
+
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getLockedState", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getLockedState", "onComplete: ");
+ }
+ });
+ }
+
+ @Override
+ public void getFirstConnect() {
+ int first = (int) SPUtils.get(mContext, "first_connect", 0);
+ mView.setFirstConnect(first == 0);
+ }
+
+ @Override
+ public void setDisableSetting() {
+ SysSettingUtils.setDisableSetting(mContext);//设置系统管控
+ }
+
+
+ @Override
+ public void sendMACAddress() {
+ NetInterfaceManager.getInstance()
+ .sendMACAddressObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("sendMACAddress", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ if (response.code == 200) {
+ Log.e("sendMACAddress", response.msg);
+ } else {
+ Log.e("sendMACAddress", response.toString());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("sendMACAddress", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("sendMACAddress", "onComplete: ");
+ mView.sendMACFinished();
+ }
+ });
+ }
+
+ @Override
+ public void updateDeviceInfo() {
+ String channel_value = JGYUtils.getInstance().getStringMetaData();
+ if ("official".equals(channel_value)) {
+ mView.updateDeviceInfoFinished();
+ return;
+ }
+ updateDevicesInfo(mContext);
+ mView.updateDeviceInfoFinished();
+ }
+
+ @SuppressLint("NewApi")
+ private void updateDevicesInfo(Context context) {
+ String address = String.valueOf(SPUtils.get(context, "AmapAddress", "-"));
+ String longitude = String.valueOf(SPUtils.get(context, "longitude", "0"));
+ String latitude = String.valueOf(SPUtils.get(context, "latitude", "0"));
+
+ JsonObject jsonObject = new JsonObject();
+ jsonObject.addProperty("address", address);
+ jsonObject.addProperty("longitude", longitude);
+ jsonObject.addProperty("latitude", latitude);
+ String add = jsonObject.toString();
+ UpdateDeviceInfoApi updateDeviceInfo = NetInterfaceManager.getUpdateDeviceInfo();
+ updateDeviceInfo.updateDeviceInfo(
+ Utils.getSerial(),
+ NetInterfaceManager.HTTP_KEY,
+ Utils.getMachine(context),
+ Utils.getHardware(context),
+ add)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("updateDevicesInfo", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull ResponseBody responseBody) {
+ try {
+ Log.e("updateDevicesInfo", "onSubscribe: " + responseBody.string());
+ } catch (IOException e) {
+ e.printStackTrace();
+ Log.e("updateDevicesInfo", "onSubscribe: IOException: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("updateDevicesInfo", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("updateDevicesInfo", "onComplete: ");
+ }
+ });
+ }
+
+ @Override
+ public void getSnTimeControl() {
+ String channel_value = JGYUtils.getInstance().getStringMetaData();
+ if ("official".equals(channel_value)) {
+ mView.getSnTimeControlFinished();
+ return;
+ }
+ NetInterfaceManager.getInstance()
+ .getSnTimeObservable()
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getSnTimeControl", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ Log.e("getSnTimeControl", "onNext: ");
+ int code = response.code;
+ if (code == 200) {
+ JSONObject jsonObject = (JSONObject) JSON.toJSON(response.data);
+ String start_time = jsonObject.getString("start_time");
+ String end_time = jsonObject.getString("end_time");
+ TimeUtils.ContralTime c = TimeUtils.String2ContralTime(mContext, start_time + "-" + end_time);
+ if (null != c) {
+ Log.e("getTimeControl", "200:" + c.toString());
+ }
+ } else {
+ TimeUtils.setEmpty(mContext);
+ TimeUtils.ContralTime c = TimeUtils.getDefaltContralTime(mContext);
+ if (null != c) {
+ Log.e("getTimeControl", c.toString());
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getSnTimeControl", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getSnTimeControl", "onComplete: ");
+ Intent intent = new Intent();
+ intent.setAction(MainService.TimeChangedReceiver.ACTION_UPDATE);
+ mContext.sendBroadcast(intent);
+ mView.getSnTimeControlFinished();
+ }
+ });
+
+ }
+
+ @Override
+ public void setJpushAlias() {
+ JPushInterface.init(mContext);
+ TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean();
+ tagAliasBean.action = ACTION_SET;
+ sequence++;
+ tagAliasBean.alias = Utils.getSerial();
+ tagAliasBean.isAliasAction = true;
+ TagAliasOperatorHelper.getInstance().handleAction(mContext, sequence, tagAliasBean);
+ String rid = JPushInterface.getRegistrationID(mContext);
+ if (!TextUtils.isEmpty(rid)) {
+ Log.e("setJpushAlias", "RegId:" + rid);
+ }
+ JPushInterface.getAlias(mContext, new Random().nextInt(100));
+ mView.setAliasFinished();
+ }
+
+ @Override
+ public void setJpushTags() {
+ NetInterfaceManager.getInstance()
+ .getJpushTagsObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("setJpushTags", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ if (response.code == 200) {
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
+ String batch = jsonObject.get("batch").getAsString();
+ if (!TextUtils.isEmpty(batch)) {
+ Set set = new HashSet();
+ set.add(batch);
+ TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean();
+ tagAliasBean.action = ACTION_SET;
+ sequence++;
+ tagAliasBean.tags = set;
+ tagAliasBean.isAliasAction = false;
+ TagAliasOperatorHelper.getInstance().handleAction(mContext, sequence, tagAliasBean);
+ } else {
+ Log.e("setJpushTags", "onNext: " + "batch empty");
+ }
+ } else {
+ Log.e("setJpushTags", "onNext: " + response.toString());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("setJpushTags", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("setJpushTags", "onComplete: ");
+ mView.setTagsFinished();
+ }
+ });
+ }
+
+ @Override
+ public void checkStoreUpdate() {
+ checkUpdateStore();
+ }
+
+
+ private void checkUpdateStore() {
+ NetInterfaceManager.getInstance()
+ .getUpdateApi()
+ .getUpdate("com.jiaoguanyi.store")
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("checkUpdateStore", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ if (response.code == 200) {
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
+ JGYUtils.getInstance().installAPK(jsonObject);
+ } else {
+ Log.e("checkUpdateStore", "onNext: " + response);
+ }
+ Log.e("checkUpdateStore", "onNext: ");
+
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("checkUpdateStore", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("checkUpdateStore", "onComplete: ");
+ mView.checkStoreUpdateFinished();
+ }
+ });
+ }
+
+ long buttonCheckUpdateTime = 0;
+
+ @Override
+ public void buttonCheckUpdate(View view) {
+// if ((SystemClock.elapsedRealtime() - buttonCheckUpdateTime) < 10000) {
+// buttonCheckUpdateTime = SystemClock.elapsedRealtime();
+// ToastUtil.show("正在检查更新");
+// } else {
+// ToastUtil.show("你已经过检查,请稍后再来");
+// }
+ checkUpdateInfo();
+ }
+
+ private void checkUpdateInfo() {
+ NetInterfaceManager.getInstance()
+ .getUpdateApi()
+ .getUpdate(BuildConfig.APPLICATION_ID)
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("checkUpdate", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ Log.e("checkUpdate", "onNext: ");
+ if (response.code == 200) {
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
+ long versionCode = jsonObject.get("version_code").getAsLong();
+ PackageManager pm = mContext.getPackageManager();
+ PackageInfo info = null;
+ try {
+ info = pm.getPackageInfo(BuildConfig.APPLICATION_ID, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (null == info || info.versionCode < versionCode) {
+ mView.buttonCheckUpdateFinished(true, jsonObject);
+ } else {
+ mView.buttonCheckUpdateFinished(false, null);
+ }
+ } else {
+ mView.buttonCheckUpdateFinished(false, null);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("checkUpdate", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("checkUpdate", "onComplete: ");
+ }
+ });
+ }
+
+
+ @Override
+ public void checkTestUpdate() {
+ String channel_value = JGYUtils.getInstance().getStringMetaData();
+ if ("official".equals(channel_value)) {
+ mView.checkTestUpdateFinished();
+ return;
+ }
+ NetInterfaceManager.getInstance()
+ .getTestUpdateObservable()
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("checkTestUpdate", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ if (response.code == 200) {
+ JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
+ JGYUtils.getInstance().installTestAPK(jsonObject);
+ } else {
+ Log.e("checkTestUpdate", "onNext: " + response);
+ }
+ Log.e("checkTestUpdate", "onNext: ");
+
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("checkTestUpdate", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("checkTestUpdate", "onComplete: ");
+ mView.checkTestUpdateFinished();
+ }
+ });
+ }
+
+
+ @Override
+ public void getSystemSettingbegin() {
+ JGYUtils.getInstance().resetDevice();
+ //重置设备
+ mView.getSystemSettingbegin();
+ }
+
+ @Override
+ public void getAppLimit() {
+ NetInterfaceManager.getInstance()
+ .getAppLimitObservable()
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getAppLimit", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull ResponseBody responseBody) {
+ Log.e("getAppLimit", "onNext: ");
+ try {
+ String bodyString = responseBody.string();
+ JsonObject jsonObject = JsonParser.parseString(bodyString).getAsJsonObject();
+ int code = jsonObject.get("code").getAsInt();
+ if (code == 200) {
+ String data = jsonObject.get("data").getAsJsonObject().get("result").getAsString();
+ JGYUtils.getInstance().writeAppPackageList(data);
+ mView.getAppLimitFinished(data);
+ } else {
+ mView.getAppLimitFinished("");
+ Log.e("getAppLimit", "onNext: " + bodyString);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ Log.e("getAppLimit", "onNext: IOException: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getAppLimit", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAppLimit", "onComplete: ");
+ }
+ });
+ }
+
+ @Override
+ public void getDeviceBatch(String packageList) {
+ String channel_value = JGYUtils.getInstance().getStringMetaData();
+ if ("official".equals(channel_value)) {
+ mView.getDeviceBatchFinished();
+ return;
+ }
+ int locked = Settings.System.getInt(mContext.getContentResolver(), "qch_unlock_ipad", 1);
+ if (locked == 0) {
+ NetInterfaceManager.getInstance()
+ .getBatchObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getDeviceBatch", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull ResponseBody responseBody) {
+ Log.e("getDeviceBatch", "onNext: ");
+ try {
+ String respons = responseBody.string();
+ JSONObject jsonObject = JSON.parseObject(respons);
+ int code = jsonObject.getInteger("code");
+ if (code == 200) {
+ String data = jsonObject.getString("data");
+ List batchList = JSON.parseArray(data, Batch.class);
+ if (null != batchList && batchList.size() > 1) {
+ if (!BuildConfig.DEBUG) {
+ JGYUtils.getInstance().deleteOtherApp(packageList);
+ }
+ } else {
+ Log.e("getDeviceBatch", "批次为空");
+ Log.e("getDeviceBatch", "onNext: respons:" + respons);
+ }
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getDeviceBatch", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getDeviceBatch", "onComplete: ");
+ mView.getDeviceBatchFinished();
+ }
+ });
+ }
+ }
+
+ @Override
+ public void getForceDownload() {
+ NetInterfaceManager.getInstance()
+ .getForceDownloadObservable()
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getForceDownload", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull ForceDownloadBean forceDownloadBean) {
+ Log.e("getForceDownload", "onNext: ");
+ switch (forceDownloadBean.getCode()) {
+ case 200:
+ Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
+ BaseApplication.getInstance().checkIsDownloading();
+ if (!BaseApplication.getInstance().isDownloading()) {
+ Aria.download(this).removeAllTask(true);
+ JGYUtils.getInstance().forceDownload(forceDownloadBean.getData());
+ } else {
+ Aria.download(this).resumeAllTask();
+ }
+ break;
+ case -200:
+ boolean qch_force_app = Settings.System.putString(mContext.getContentResolver(), "qch_force_app", "invalid");
+ Log.e("getForceDownload", "qch_force_app:" + qch_force_app);
+ break;
+ default:
+ Log.e("getForceDownload", forceDownloadBean.getMsg());
+ break;
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getForceDownload", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getForceDownload", "onComplete: ");
+ mView.getForceDownloadFinished();
+ }
+ });
+ }
+
+ @Override
+ public void getBrowserList() {
+ NetInterfaceManager.getInstance()
+ .getBrowserListSettingObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getBrowserList", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse browserDataBaseResponse) {
+ Log.e("getBrowserList", "onNext: ");
+ if (browserDataBaseResponse.code == 200) {
+ String white = browserDataBaseResponse.data.getWhite();
+ if (!TextUtils.isEmpty(white)) {
+ boolean whiteList = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", white);
+ Log.e("getBrowserList", "setBrowserList white: " + white + ":" + whiteList);
+ } else {
+ Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", " ");
+ }
+ String black = browserDataBaseResponse.data.getBlack();
+ if (!TextUtils.isEmpty(black)) {
+ boolean blackList = Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", black);
+ Log.e("getBrowserList", "setBrowserList black: " + black + ":" + blackList);
+ } else {
+ Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getBrowserList", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getBrowserList", "onComplete: ");
+ mView.getBrowserListFinished();
+ }
+ });
+ }
+
+ @Override
+ public void getBrowserBookmarks() {
+ NetInterfaceManager.getInstance()
+ .getBrowserBookmarksObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getBrowserBookmarks", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse browserBookmarksBaseResponse) {
+ Log.e("getBrowserBookmarks", "onNext: ");
+ if (browserBookmarksBaseResponse.code == 200) {
+ //主页
+ String homepagURL = browserBookmarksBaseResponse.data.getHomepage();
+ Intent homepag = new Intent("qch_app_brower_homepage");
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ homepag.setPackage("com.android.settings")
+ .setPackage("com.android.browser");
+ }
+ if (homepagURL != null && !homepagURL.equals("")) {
+ homepag.putExtra("homepage", homepagURL);
+ } else {
+ homepag.putExtra("homepage", "Invalid");
+ }
+ mContext.sendBroadcast(homepag);
+
+ //书签
+ String labelpage = browserBookmarksBaseResponse.data.getLabelpage();
+ Intent websiteBookMark = new Intent("qch_app_brower_website");
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ websiteBookMark.setPackage("com.android.settings")
+ .setPackage("com.android.browser");
+ }
+ if (labelpage != null && !labelpage.equals("")) {
+ websiteBookMark.putExtra("websiteBookMark", labelpage);
+ } else {
+ websiteBookMark.putExtra("websiteBookMark", "Invalid");
+ }
+ mContext.sendBroadcast(websiteBookMark);
+ } else {
+ Intent intent1 = new Intent("qch_app_brower_homepage");
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ intent1.setPackage("com.android.settings")
+ .setPackage("com.android.browser");
+ }
+ intent1.putExtra("homepage", "Invalid");
+ mContext.sendBroadcast(intent1);
+ Intent intent2 = new Intent("qch_app_brower_website");
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ intent2.setPackage("com.android.settings")
+ .setPackage("com.android.browser");
+ }
+ intent2.putExtra("websiteBookMark", "Invalid");
+ mContext.sendBroadcast(intent2);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getBrowserBookmarks", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getBrowserBookmarks", "onComplete: ");
+ mView.getBrowserBookmarksFinished();
+ }
+ });
+ }
+
+ @Override
+ public void getDesktopIcon() {
+ NetInterfaceManager.getInstance()
+ .getDesktopIconObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getDesktopIcon", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ Log.e("getDesktopIcon", "onNext: ");
+ String data = response.data.toString();
+ ApkUtils.showAllAPP(mContext);
+ Log.e("getDesktopIcon", "data: " + data);
+ if (response.code == 200) {
+ if (!TextUtils.isEmpty(data)) {
+ List newList = Arrays.asList(data.split(","));//新的list
+ PackageManager pm = mContext.getPackageManager();
+ for (String pack : newList) {
+ try {
+ pm.setApplicationEnabledSetting(pack, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);
+ Log.e("getDesktopIcon", pack);
+ } catch (Exception e) {
+ Log.e("getDesktopIcon", "Exception: " + e.getMessage());
+ }
+ }
+ }
+ } else {
+ Log.e("getDesktopIcon", "onNext: " + response.toString());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getDesktopIcon", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getDesktopIcon", "onComplete: ");
+ mView.getDesktopIconFinished();
+ }
+ });
+ }
+
+ @Override
+ public void getAppAutoStartUpdateAndNet() {
+ NetInterfaceManager.getInstance()
+ .getAppAutoStartUpdateAndNetObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getAppAutoStart", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull NetAndLaunchBean netAndLaunchBean) {
+ Log.e("getAppAutoStart", "onNext: ");
+ if (netAndLaunchBean.getCode() == 200) {
+ JGYUtils.getInstance().setNetAndlaunch(netAndLaunchBean);
+ } else {
+ Log.e("getAppAutoStart", "onNext: " + netAndLaunchBean.toString());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getAppAutoStart", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAppAutoStart", "onSubscribe: ");
+ mView.getAppAutoStartUpdateAndNetFinished();
+ }
+ });
+ }
+
+ @Override
+ public void getAppIDControl() {
+ NetInterfaceManager.getInstance()
+ .getAppIDControlObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getAppIDControl", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull ResponseBody responseBody) {
+ Log.e("getAppIDControl", "onNext: ");
+ try {
+ String bodyString = responseBody.string();
+ JsonObject jsonObject = JsonParser.parseString(bodyString).getAsJsonObject();
+ int code = jsonObject.get("code").getAsInt();
+ if (code == 200) {
+ JsonObject data = jsonObject.getAsJsonObject("data");
+ JsonElement ids = data.get("ids");
+ JsonElement packages = data.get("package");
+ if (null == ids || null == packages) {
+ JGYUtils.getInstance().writeDeselectIDtoSystem("", "");
+ } else {
+ JGYUtils.getInstance().writeDeselectIDtoSystem(ids.getAsString(), packages.getAsString());
+ }
+ } else {
+ Log.e("getAppIDControl", "onNext: " + bodyString);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ Log.e("getAppIDControl", "onNext: IOException: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getAppIDControl", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAppIDControl", "onComplete: ");
+ mView.getAppIDControlFinished();
+ }
+ });
+ }
+
+ @Override
+ public void setAppinsideWeb() {
+ NetInterfaceManager.getInstance()
+ .getAppinsideWebObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("setAppinsideWeb", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> listBaseResponse) {
+ Log.e("setAppinsideWeb", "onNext: ");
+ JGYUtils.getInstance().setAppinsideWeb(listBaseResponse);
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("setAppinsideWeb", "onError: ");
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("setAppinsideWeb", "onComplete: ");
+ mView.setAppinsideWebFinished();
+ }
+ });
+ }
+
+ @Override
+ public void setSystemSetting() {
+ NetInterfaceManager.getInstance()
+ .getSystemSettingObservable()
+ .observeOn(Schedulers.io())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("setSystemSetting", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull ResponseBody responseBody) {
+ Log.e("setSystemSetting", "onNext: ");
+ SPUtils.put(mContext, "first_connect", 1);
+ try {
+ String bodyString = responseBody.string();
+ JsonObject jsonObject = JsonParser.parseString(bodyString).getAsJsonObject();
+ int code = jsonObject.get("code").getAsInt();
+ if (code == 200) {
+ String data = jsonObject.getAsJsonObject("data").toString();
+ JGYUtils.getInstance().SettingSysData(data);
+ } else {
+ Log.e("setSystemSetting", "onNext: " + bodyString);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ Log.e("setSystemSetting", "onNext: IOException: " + e.getMessage());
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("setSystemSetting", "onError: ");
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("setSystemSetting", "onComplete: ");
+ mView.setSystemSettingFinished();
+ }
+ });
+
+ }
+
+ @Override
+ public void getScreenLockState() {
+ String channel_value = JGYUtils.getInstance().getStringMetaData();
+ if ("official".equals(channel_value)) {
+ mView.setScreenLockStateFinished(false, "");
+ return;
+ }
+ NetInterfaceManager.getInstance()
+ .getScreenLockObservable()
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getScreenLockState", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ Log.e("getScreenLockState", "onNext: ");
+ if (response.code == 200) {
+ String bodyString = response.data.toString();
+ JsonObject jsonObject = JsonParser.parseString(bodyString).getAsJsonObject();
+ JsonObject data = jsonObject.getAsJsonObject(response.data.toString());
+ int is_screen_lock = data.get("is_screen_lock").getAsInt();
+ String name = data.get("name").getAsString();
+ mView.setScreenLockStateFinished(is_screen_lock == 1, name);
+ } else {
+ mView.setScreenLockStateFinished(false, "");
+ Log.e("getScreenLockState", "onNext: " + response);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getScreenLockState", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getScreenLockState", "onComplete: ");
+ }
+ });
+ }
+
+ @Override
+ public void getDefaultDesktop() {
+ String channel_value = JGYUtils.getInstance().getStringMetaData();
+ if ("official".equals(channel_value)) {
+ mView.getDefaultDesktopFinished();
+ return;
+ }
+ NetInterfaceManager.getInstance()
+ .getDesktopObservable()
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getDefaultDesktop", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse response) {
+ Log.e("getDefaultDesktop", "onNext: ");
+ if (response.code == 200) {
+ JSONObject jsonObject = JSONObject.parseObject(response.data.toString());
+ JGYUtils.getInstance().installDesktop(jsonObject);
+ } else {
+ Log.e("getDefaultDesktop", "onNext: " + response);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getDefaultDesktop", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getDefaultDesktop", "onComplete: ");
+ mView.getDefaultDesktopFinished();
+ }
+ });
+ }
+
+
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/activity/OldActivity.java b/app/src/main/java/com/mjsheng/myappstore/activity/OldActivity.java
new file mode 100644
index 0000000..f3ac49d
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/activity/OldActivity.java
@@ -0,0 +1,1844 @@
+package com.mjsheng.myappstore.activity;
+
+import android.annotation.SuppressLint;
+import android.app.AlertDialog;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.content.res.Configuration;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Handler;
+import android.os.Message;
+import android.os.PersistableBundle;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.KeyEvent;
+import android.view.View;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.RelativeLayout;
+import android.widget.TextView;
+
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.localbroadcastmanager.content.LocalBroadcastManager;
+
+import com.alibaba.fastjson.JSON;
+import com.arialyy.aria.core.Aria;
+import com.blankj.utilcode.util.AppUtils;
+import com.blankj.utilcode.util.EncryptUtils;
+import com.blankj.utilcode.util.PathUtils;
+import com.lzy.okgo.OkGo;
+import com.lzy.okgo.callback.StringCallback;
+import com.mjsheng.myappstore.BuildConfig;
+import com.mjsheng.myappstore.R;
+import com.mjsheng.myappstore.base.BaseApplication;
+import com.mjsheng.myappstore.bean.ForceDownloadBean;
+import com.mjsheng.myappstore.bean.ForceDownloadData;
+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.jpush.TagAliasOperatorHelper;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
+import com.mjsheng.myappstore.network.HTTPInterface;
+import com.mjsheng.myappstore.network.URLAddress;
+import com.mjsheng.myappstore.network.api.AppLimitApi;
+import com.mjsheng.myappstore.network.api.DeselectBrowserIDApi;
+import com.mjsheng.myappstore.network.api.DeselectIDApi;
+import com.mjsheng.myappstore.network.api.ForceDownloadApi;
+import com.mjsheng.myappstore.network.api.NetAndLaunchApi;
+import com.mjsheng.myappstore.network.api.SystemSettingApi;
+import com.mjsheng.myappstore.utils.ApkUtils;
+import com.mjsheng.myappstore.utils.ExampleUtil;
+import com.mjsheng.myappstore.utils.JGYUtils;
+import com.mjsheng.myappstore.utils.SPUtils;
+import com.mjsheng.myappstore.utils.SaveListUtils;
+import com.mjsheng.myappstore.utils.SysSettingUtils;
+import com.mjsheng.myappstore.utils.ToastUtil;
+import com.mjsheng.myappstore.utils.Utils;
+
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+import cn.jpush.android.api.JPushInterface;
+import io.reactivex.Observer;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.disposables.Disposable;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.Call;
+import okhttp3.Response;
+import okhttp3.ResponseBody;
+import rx.Observable;
+import rx.functions.Action1;
+
+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 OldActivity extends AppCompatActivity {
+ private static final String TAG = OldActivity.class.getSimpleName();
+ private long mPreClickTime;
+ private Context mContext;
+ private final String ACTION_HrReceiver_JGY_DIS = "qch_jgy_network_disallow";
+ private final String ACTION_HrReceiver_JGY = "qch_jgy_network_allow";
+ // private DownloadManager downloadManager;
+ private ImageView imageView;
+ private TextView tv_devsn, tv_devmac, tv_version;
+ private TextView tv_batch, tv_class, tv_number, tv_name;
+ private Button bt_checkupdate;
+ private int DeviceInfo;
+ private RelativeLayout checkupdate;
+ private ImageView back, iv_locked;
+ private RelativeLayout layout_class, layout_number, layout_name;
+ //jiguang
+ public static boolean isForeground = false;
+ //for receive customer msg from jpush server
+ private MessageReceiver mMessageReceiver;
+ public static final String MESSAGE_RECEIVED_ACTION = "com.jiaoguanyi.appstore.MESSAGE_RECEIVED_ACTION";
+ public static final String KEY_TITLE = "title";
+ public static final String KEY_MESSAGE = "message";
+ public static final String KEY_EXTRAS = "extras";
+
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ if (savedInstanceState != null) {
+ // FRAGMENTS_TAG
+ savedInstanceState.remove("android:support:fragments");
+ savedInstanceState.remove("android:fragments");
+ }
+
+// if (getRequestedOrientation() != ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
+// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+// }
+// requestPermission();
+// acquireWakeLock();//加入后锁屏解锁有延迟
+ registerMessageReceiver(); // used for receive msg
+// HTTPInterface.checkDevicesInfo(handler);
+// startService(new Intent(MainActivity.this, MyDownloadService.class));
+
+// Aria.get(this).getDownloadConfig().setMaxTaskNum(1);
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+// Aria.download(this).removeAllTask(false);
+
+ initView();
+ initData();
+
+// downloadManager = DownloadService.getDownloadManager();
+// downloadManager.startAllTask();
+ Intent allIntent = new Intent();
+ allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION);
+ sendBroadcast(allIntent);
+
+// CmdUtil.execute(" screencap -p /sdcard/" + "screen" + System.currentTimeMillis() + ".png");
+// Utils.getMachine(this);
+// Utils.getHardware(this);
+// Utils.queryStorage();
+// Utils.shotScreen(this);
+ HTTPInterface.updateDeviceInfo(this);
+// testFilepath();
+ HTTPInterface.getSnTimeControl(OldActivity.this);
+ }
+
+ private void testFilepath() {
+ File file = new File("/system/media/bootanimation.zip");
+ if (file.exists()) {
+ Log.e("testFilepath", "exists");
+ } else {
+ Log.e("testFilepath", "not exists");
+ }
+ File file2 = new File("/system/media/bootanimation1.zip");
+ try {
+ file2.createNewFile();
+ } catch (IOException e) {
+ e.printStackTrace();
+ Log.e("testFilepath", "createNewFile:" + e.getMessage());
+ }
+ }
+
+
+ public void registerMessageReceiver() {
+ mMessageReceiver = new MessageReceiver();
+ IntentFilter filter = new IntentFilter();
+ filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ filter.addAction(MESSAGE_RECEIVED_ACTION);
+ LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter);
+ }
+
+ public class MessageReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ try {
+ if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
+ String messge = intent.getStringExtra(KEY_MESSAGE);
+ String extras = intent.getStringExtra(KEY_EXTRAS);
+ StringBuilder showMsg = new StringBuilder();
+ showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
+ if (!ExampleUtil.isEmpty(extras)) {
+ showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
+ }
+// setCostomMsg(showMsg.toString());
+ }
+ } catch (Exception e) {
+ }
+ }
+ }
+
+
+ public void setAlias() {
+ TagAliasBean tagAliasBean = new TagAliasBean();
+ tagAliasBean.action = ACTION_SET;
+ sequence++;
+ tagAliasBean.alias = Utils.getSerial();
+ tagAliasBean.isAliasAction = true;
+ TagAliasOperatorHelper.getInstance().handleAction(OldActivity.this, sequence, tagAliasBean);
+ }
+
+ @Override
+ public void onConfigurationChanged(Configuration newConfig) {
+ super.onConfigurationChanged(newConfig);
+ setContentView(R.layout.activity_main);
+ mContext = this;
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
+ // super.onSaveInstanceState(outState, outPersistentState);
+ }
+
+ private class LocationReceiver extends BroadcastReceiver {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ // ToastTool.show("广播:::"+intent.getAction() + "--------" + intent.getStringExtra("package_name"));
+ }
+ }
+
+
+ synchronized public void sendMACaddress() {
+ String devices_version = Utils.getProperty("ro.custom.build.version", "获取失败");//获取自定义版本
+ String rid = JPushInterface.getRegistrationID(OldActivity.this);
+ OkGo.post(URLAddress.SEND_DEVICES)
+ .params("sn", Utils.getSerial())
+ .params("mac", Utils.getAndroid7MAC())
+ .params("jpush_id", rid)
+ .params("devices_version", devices_version)
+ .params("appstore_version", BuildConfig.VERSION_NAME)//我的设备版本号
+ .params("store_version", Utils.getAPPVersionName(this))//管教易版本号
+ .execute(new StringCallback() {
+ @Override
+ public void onSuccess(String s, Call call, Response response) {
+ try {
+ com.alibaba.fastjson.JSONObject msgObject = JSON.parseObject(s);
+ Log.e("fht", "sendMACaddress onSuccess" + s);
+ } catch (Exception e) {
+ Log.e("fht", "sendMACaddress Exception" + e);
+ }
+ }
+
+ @Override
+ public void onError(Call call, Response response, Exception e) {
+ super.onError(call, response, e);
+ Log.e("fht", "sendMACaddress onError:" + e.getMessage());
+
+ }
+
+ });
+ {
+
+ }
+ }
+
+ 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);
+ String SN = Utils.getSerial();
+ tv_devsn.setText(SN);
+ if (SN.length() != 12) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(OldActivity.this);
+// builder.setTitle("SN错误");
+ builder.setMessage("注意:设备SN号码格式错误!");
+ builder.setIcon(R.mipmap.ic_launcher);
+ builder.setCancelable(true);
+ //设置正面按钮
+ builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ builder.show();
+ }
+ tv_devmac = findViewById(R.id.tv_devmac);
+ String macaddr = Utils.getAndroid7MAC();
+ Log.e("getMacAddress", Utils.getAndroid7MAC());
+ if (macaddr.equals("")) {
+ tv_devmac.setText("获取失败");
+ } else {
+ tv_devmac.setText(macaddr);
+ }
+ tv_version = findViewById(R.id.version);
+ tv_version.setText(BuildConfig.VERSION_NAME);
+
+ layout_class = findViewById(R.id.layout_class);
+ layout_number = findViewById(R.id.layout_number);
+ layout_name = findViewById(R.id.layout_name);
+
+ tv_batch = findViewById(R.id.tv_batch);
+ String batch = (String) SPUtils.get(this, "batch", "暂无信息");
+ if (TextUtils.isEmpty(batch) || batch.equalsIgnoreCase("暂无信息")) {
+ tv_batch.setVisibility(View.GONE);
+ }
+ tv_batch.setText(batch);
+ tv_class = findViewById(R.id.tv_class);
+ String classes = (String) SPUtils.get(this, "classes", "暂无信息");
+ if (TextUtils.isEmpty(classes) || classes.equalsIgnoreCase("暂无信息")) {
+ layout_class.setVisibility(View.GONE);
+ }
+ tv_class.setText(classes);
+ tv_number = findViewById(R.id.tv_number);
+ String sno = (String) SPUtils.get(this, "sno", "暂无信息");
+ if (TextUtils.isEmpty(sno) || sno.equalsIgnoreCase("暂无信息")) {
+ layout_number.setVisibility(View.GONE);
+ }
+ tv_number.setText(sno);
+ tv_name = findViewById(R.id.tv_name);
+ String realname = (String) SPUtils.get(this, "realname", "暂无信息");
+ if (TextUtils.isEmpty(realname) || realname.equalsIgnoreCase("暂无信息")) {
+ layout_name.setVisibility(View.GONE);
+ }
+ tv_name.setText(realname);
+ back = findViewById(R.id.back);
+ back.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ lazyExit();
+ }
+ });
+ iv_locked = findViewById(R.id.locked);
+
+
+ bt_checkupdate = findViewById(R.id.chkupd);
+ bt_checkupdate.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+ ToastUtil.show("正在检查更新");
+ HTTPInterface.checkUpdate(mHandler, BuildConfig.APPLICATION_ID);
+ }
+ });
+ }
+
+ 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());
+ int first = (int) SPUtils.get(OldActivity.this, "first_connect", 0);
+ //开机第一次管控默认关闭所有功能
+ if (first == 0) {
+ SysSettingUtils.setDisableSetting(OldActivity.this);//设置系统管控
+ }
+ getLockedState(mHandler);
+// MyApplication.getInstance().getWhitePackageList();
+
+// update();//接口更新app
+ checkUpdate();//更新app
+
+ Log.e("mac", Utils.getAndroid7MAC());
+ DeviceInfo = (int) SPUtils.get(this, "isLogined", 2);
+ switch (DeviceInfo) {
+ case 0:
+ setImageAndText(imageView, "设备未绑定");
+ break;
+ case 1:
+ setImageAndText(imageView, "设备已绑定");
+ break;
+ case 2:
+ setImageAndText(imageView, "未经验证的设备,请联系客服");
+ break;
+ }
+ }
+
+ private void setImageAndText(ImageView imageView, String text) {
+// Bitmap bitmap = Utils.createQRImage(Utils.getSn(), 250, 250);
+// imageView.setImageBitmap(bitmap);
+ }
+
+
+// Handler handler = new Handler() {
+//// @Override
+//// public void handleMessage(Message msg) {
+//// super.handleMessage(msg);
+//// switch (msg.what) {
+//// case 0:
+//// SPUtils.put(MainActivity.this, "isLogined", 0);
+//// setImageAndText(imageView, "设备未绑定");
+//// break;
+//// case 1:
+//// UserInfo userInfo = (UserInfo) msg.obj;
+//// SPUtils.put(MainActivity.this, "isLogined", 1);
+//// SPUtils.put(MainActivity.this, "member_id", userInfo.getMember_id());
+//// SPUtils.put(MainActivity.this, "sn_id", userInfo.getId());
+//// setImageAndText(imageView, "设备已绑定");
+//// break;
+//// case 2:
+//// SPUtils.put(MainActivity.this, "isLogined", 2);
+//// setImageAndText(imageView, "未经验证的设备,请联系客服");
+//// break;
+//// }
+//// }
+//// };
+
+// private String[] permission = new String[]{
+// Permission.SYSTEM_ALERT_WINDOW,
+// Permission.CAMERA,
+// Permission.READ_SMS,
+// Permission.RECEIVE_SMS,
+// Permission.SEND_SMS,
+// Permission.REQUEST_INSTALL_PACKAGES,//不用请求也可以安装
+// Permission.READ_EXTERNAL_STORAGE,
+// Permission.WRITE_EXTERNAL_STORAGE,
+// Permission.READ_PHONE_STATE
+// };
+
+// public void requestPermission() {
+// XXPermissions.with(this)
+// // 可设置被拒绝后继续申请,直到用户授权或者永久拒绝
+// .constantRequest()
+// // 支持请求6.0悬浮窗权限8.0请求安装权限
+// //.permission(Permission.REQUEST_INSTALL_PACKAGES)
+// // 不指定权限则自动获取清单中的危险权限
+// .permission(permission)
+// .request(new OnPermission() {
+//
+// @Override
+// public void hasPermission(List granted, boolean isAll) {
+// if (isAll) {
+// File file = new File(PathUtils.getExternalDownloadsPath() + "/jgy/");
+// if (!file.exists()){
+// file.mkdirs();
+// }
+// } else {
+// ToastUtil.show("需要授予所有权限才能正常使用本程序!");
+// }
+// }
+//
+// @Override
+// public void noPermission(List denied, boolean quick) {
+// if (quick) {
+// ToastUtil.show("被永久拒绝授权,请手动授予权限!");
+// //如果是被永久拒绝就跳转到应用权限系统设置页面
+// XXPermissions.gotoPermissionSettings(MainActivity.this);
+// } else {
+// ToastUtil.show("获取权限失败");
+// }
+// }
+// });
+// }
+
+ private boolean locked = false;
+
+ public void getLockedState(final Handler handler) {
+ OkGo.post(URLAddress.GET_DEVICES_LOCKED)
+ .params("sn", Utils.getSerial())
+ .execute(new StringCallback() {
+ @Override
+ public void onSuccess(String s, Call call, Response response) {
+ Log.e("onSuccess", s);
+ Log.e("getSerial", Utils.getSerial());
+ com.alibaba.fastjson.JSONObject msgObject = JSON.parseObject(s);
+ Log.e("getLockedState", s);
+ Integer code = (msgObject.getInteger("code"));
+ if (code == 200) {
+ com.alibaba.fastjson.JSONObject dataArray = msgObject.getJSONObject("data");
+ int lock = dataArray.getInteger("lock");
+ Log.e("ttlocked", String.valueOf(lock));
+ if (lock == 0) {
+ locked = false;
+ boolean se = Settings.System.putInt(OldActivity.this.getContentResolver(), "qch_unlock_ipad", 1);
+ Log.e("ttlocked1", "getLockedState---------" + Settings.System.getString(OldActivity.this.getContentResolver(), "qch_unlock_ipad"));
+ SysSettingUtils.setEnableSetting(OldActivity.this);
+ SPUtils.put(OldActivity.this, "first_connect", 1);
+ Log.e("ttlocked1", "qch_unlock_ipad---------" + locked + se);
+ handler.sendEmptyMessage(-3);
+ } else {
+ locked = true;
+ Settings.System.putInt(OldActivity.this.getContentResolver(), "qch_unlock_ipad", 0);
+ Log.e("ttlocked2", "qch_unlock_ipad---------" + locked);
+
+ String a = Settings.System.getString(OldActivity.this.getContentResolver(), "DeselectBrowserArray");
+ Log.e("ttlocked2", "DeselectBrowserArray---------" + a);
+ String b = Settings.System.getString(OldActivity.this.getContentResolver(), "qch_webblack_url");
+ Log.e("ttlocked2", "qch_webblack_url---------" + b);
+ handler.sendEmptyMessage(3);
+ HTTPInterface.setJpushTags(OldActivity.this);
+ sendMACaddress();
+ timerImitate();
+ lazyLoading();
+ }
+ } else if (code == -300) {
+// ApkUtils.uninstallAllApp(MainActivity.this);
+ handler.sendEmptyMessage(-3);
+ }
+ }
+
+ @Override
+ public void onError(Call call, Response response, Exception e) {
+ super.onError(call, response, e);
+ Log.e("onError", "error");
+ }
+
+ });// 请求方式和请求url
+ }
+
+ private void lazyLoading() {
+ Observable.timer(1000, TimeUnit.MILLISECONDS)
+ .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
+ .subscribe(new Action1() {
+ @Override
+ public void call(Long aLong) {
+// getDeselectBrowerID();//浏览器网址管控
+ HTTPInterface.setBrowserList(OldActivity.this);//浏览器网址管控
+ HTTPInterface.setHomepagtag(OldActivity.this);//设置主页和标签
+ HTTPInterface.setAppinsideWeb(OldActivity.this);//app内部网页管控
+ HTTPInterface.setHideDesktopIcon(OldActivity.this);//设置桌面图标隐藏
+ getDeselectID();//ID管控
+ getAppLimitApi();//写入可被安装的包名
+// getAppInfo();//上传APP信息
+ ApkUtils.getAppInfo(OldActivity.this);//上传APP信息
+ getSystemSetting();//设置系统管控
+ getNetAndLaunchSetting();//联网管控
+// Aria.download(this).removeAllTask(true);
+ getForceDownload();//强制下载apk
+ JGYUtils.getInstance().resetDevice();//恢复出厂设置
+ // fromNetToUpdate();
+ String registrationID = JPushInterface.getRegistrationID(OldActivity.this);
+ Log.e("mjsheng", registrationID + "------------------------");
+ SaveListUtils.getList();
+ }
+ });
+ }
+
+
+ private void checkUpdate() {
+ HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.store");
+// HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.appstore");
+ HTTPInterface.checkTestUpdate(OldActivity.this);
+ }
+
+ private Handler mHandler = new Handler() {
+ @SuppressLint("HandlerLeak")
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ switch (msg.what) {
+ case 100:
+// ToastUtil.show("已是最新版本");
+ break;
+ case 200:
+ com.alibaba.fastjson.JSONObject jsonObject = (com.alibaba.fastjson.JSONObject) msg.obj;
+ installAPK(jsonObject);
+ break;
+ case -200:
+ Log.e("fht", "no update");
+ break;
+ case 2:
+ StudentsInfo info = com.alibaba.fastjson.JSONObject.parseObject(String.valueOf(msg.obj), StudentsInfo.class);
+ SPUtils.put(OldActivity.this, "admin_id", info.getAdmin_id());
+ if (null != info) {
+ if (TextUtils.isEmpty(info.getBatch())) {
+ tv_batch.setVisibility(View.GONE);
+ tv_batch.setText("暂无信息");
+ } else {
+ tv_batch.setVisibility(View.VISIBLE);
+ tv_batch.setText(info.getBatch());
+ SPUtils.put(OldActivity.this, "batch", info.getBatch());
+ }
+ if (TextUtils.isEmpty(info.getClasses())) {
+ layout_class.setVisibility(View.GONE);
+ tv_class.setText("暂无信息");
+ } else {
+ layout_class.setVisibility(View.VISIBLE);
+ tv_class.setText(info.getClasses());
+ SPUtils.put(OldActivity.this, "classes", info.getClasses());
+ }
+ if (TextUtils.isEmpty(info.getSno())) {
+ layout_number.setVisibility(View.GONE);
+ tv_number.setText("暂无信息");
+ } else {
+ layout_number.setVisibility(View.VISIBLE);
+ tv_number.setText(info.getSno());
+ SPUtils.put(OldActivity.this, "sno", info.getSno());
+ }
+ if (TextUtils.isEmpty(info.getRealname())) {
+ layout_name.setVisibility(View.GONE);
+ tv_name.setText("暂无信息");
+ } else {
+ layout_name.setVisibility(View.VISIBLE);
+ tv_name.setText(info.getRealname());
+ SPUtils.put(OldActivity.this, "realname", info.getRealname());
+ }
+ }
+
+ break;
+ case -2:
+// tv_batch.setText("暂无信息");
+// tv_class.setText("暂无信息");
+// tv_number.setText("暂无信息");
+// tv_name.setText("暂无信息");
+ String batch = (String) SPUtils.get(OldActivity.this, "batch", "暂无信息");
+ if (TextUtils.isEmpty(batch) || "暂无信息".equals(batch)) {
+ tv_batch.setVisibility(View.GONE);
+ } else {
+ tv_batch.setText(batch);
+ }
+
+ String classes = (String) SPUtils.get(OldActivity.this, "classes", "暂无信息");
+ if (TextUtils.isEmpty(classes) || "暂无信息".equals(classes)) {
+ layout_class.setVisibility(View.GONE);
+ } else {
+ tv_class.setText(classes);
+ }
+ String sno = (String) SPUtils.get(OldActivity.this, "sno", "暂无信息");
+ if (TextUtils.isEmpty(sno) || "暂无信息".equals(sno)) {
+ layout_number.setVisibility(View.GONE);
+ } else {
+ tv_number.setText(sno);
+ }
+ String realname = (String) SPUtils.get(OldActivity.this, "realname", "暂无信息");
+ if (TextUtils.isEmpty(realname) || "暂无信息".equals(realname)) {
+ layout_name.setVisibility(View.GONE);
+ } else {
+ tv_name.setText(realname);
+ }
+ break;
+ case 3:
+ iv_locked.setVisibility(View.VISIBLE);
+ break;
+ case -3:
+ iv_locked.setVisibility(View.GONE);
+ break;
+ default:
+ break;
+ }
+ }
+
+ };
+
+ private void installAPK(com.alibaba.fastjson.JSONObject jsonObject) {
+ final String url = jsonObject.getString("url");
+ int versionCode = jsonObject.getInteger("version_code");
+ final String packageName = jsonObject.getString("package");
+ String app_name = jsonObject.getString("app_name");
+ final com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
+ object.put("app_name", app_name);
+ object.put("app_package", packageName);
+ PackageManager pm = getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (packageInfo == null || packageInfo.versionCode < versionCode) {
+ if (packageName.equalsIgnoreCase("com.jiaoguanyi.store")) {
+// Aria.download(this)
+// .load(url) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
+// .setExtendField(object.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(this, url, object);
+ return;
+ }
+ AlertDialog.Builder builder = new AlertDialog.Builder(OldActivity.this);
+ builder.setTitle("更新:");
+ builder.setMessage("检测到有新版本,是否更新?");
+ builder.setIcon(R.mipmap.ic_launcher);
+ builder.setCancelable(true);
+ //设置正面按钮
+ builder.setPositiveButton("更新", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+// Aria.download(this)
+// .load(url) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
+// .setExtendField(object.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(OldActivity.this, url, object);
+ dialog.dismiss();
+ }
+ });
+ //设置反面按钮
+ builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
+ @Override
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ builder.show();
+ } else {
+ if (!packageName.equalsIgnoreCase("com.jiaoguanyi.store")) {
+ mHandler.postDelayed(toast, 4000);
+ }
+ Log.e("fht", "已是最新版本");
+ }
+
+ }
+
+ private Runnable toast = new Runnable() {
+
+ @Override
+ public void run() {
+ ToastUtil.show("已是最新版本");
+ }
+ };
+
+
+ @Override
+ protected void onStop() {
+ super.onStop();
+ }
+
+ @Override
+ protected void onPause() {
+ isForeground = false;
+ super.onPause();
+ }
+
+ @Override
+ protected void onResume() {
+ super.onResume();
+ isForeground = true;
+ Intent allIntent = new Intent();
+ allIntent.setAction(Utils.DOWNLOAD_ALLTASK_ACTION);
+ sendBroadcast(allIntent);
+// loadHeadImg(Configure.HTTP_TAG_HOME_PAGE_URL);
+ getLockedState(mHandler);
+// MyApplication.getInstance().getWhitePackageList();
+ getInfo(mHandler);
+// CmdUtil.execute(" screencap -p /sdcard/" + "screen" + System.currentTimeMillis() + ".png");
+ }
+
+ private void getInfo(final Handler handler) {
+ OkGo.post(URLAddress.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:" + e.getMessage());
+ handler.sendEmptyMessage(-2);
+ }
+
+ });// 请求方式和请求url
+ }
+
+// private void loadHeadImg(String URL) {
+// BrankPicApi brankPicApi = Network.getBrankPicApi();
+// brankPicApi.getBrankPicApi(Configure.HTTP_KEY, Utils.getSerial(), "1")
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new Observer() {
+// @Override
+// public void onSubscribe(Disposable d) {
+//
+// }
+//
+// @Override
+// public void onNext(CommonPicBean projectPicBean) {
+// paraData(projectPicBean);
+// Log.e("mjsheng", "brankPicApi---" + projectPicBean.toString());
+// }
+//
+// @Override
+// public void onError(Throwable e) {
+//// Utils.showToast(MainActivity.this, "网络出错!");
+// Log.e("mjsheng", "brankPicApi---error----" + e.getMessage());
+//
+// }
+//
+// @Override
+// public void onComplete() {
+//
+// }
+// });
+//
+//
+// }
+
+// private void paraData(CommonPicBean categoryPicBean) {
+// int code = categoryPicBean.getCode();
+// switch (code) {
+// case 200:
+// final List data = categoryPicBean.getData();
+//// if (data != null && data.size() > 0) {
+//// List list = new ArrayList<>();
+//// for (int i = 0; i < data.size(); i++) {
+//// list.add(data.get(i).getImg());
+//// }
+//// webBannerAdapter = new WebBannerAdapter(getActivity(), list);
+//// webBannerAdapter.setOnBannerItemClickListener(new BannerLayout.OnBannerItemClickListener() {
+//// @Override
+//// public void onItemClick(int position) {
+//// loadProjectByType(Configure.HTTP_TAG_BRAND_DETAILS_URL, data.get(position).getId(), data.get(position).getName());
+//// }
+//// });
+//// recyclerBanner.setAdapter(webBannerAdapter);
+//// mAdapter = new TopRecyclerViewAdapter(getActivity(), "home", list, new TopRecyclerViewAdapter.HorizontalScrollViewListener() {
+//// @Override
+//// public void onClick(String iconUrl, int position) {
+//// sound.playSoundEffect();
+//// loadProjectByType(Configure.HTTP_TAG_BRAND_DETAILS_URL, data.get(position).getId(), data.get(position).getName());
+//// }
+//// });
+//// mTopRlView.setAdapter(mAdapter);
+//// } else {
+//// // Utils.showToast(getContext(), "数据为空!");
+//// Log.e("mjsheng", "推荐页轮播图为空!");
+//// }
+// break;
+// case -200:
+// paraError(categoryPicBean.getMsg());
+// break;
+// }
+// }
+
+// private void paraError(String msg) {
+// switch (msg) {
+// case "没有找到SN码":
+// ToastUtil.show(msg);
+// break;
+// default:
+// ToastUtil.show(msg);
+// break;
+// }
+// }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+
+ }
+
+
+ @Override
+ public void finish() {
+ super.finish();
+ }
+
+// private void getAppInfo() {
+// ArrayList appList = new ArrayList<>(); //用来存储获取的应用信息数据
+// List packages = getPackageManager().getInstalledPackages(0);
+//
+// for (int i = 0; i < packages.size(); i++) {
+// PackageInfo packageInfo = packages.get(i);
+// if (ApkUtils.systemapp.contains(packageInfo.packageName)) {
+// continue;
+// }
+// UploadAppInfo uploadAppInfo = new UploadAppInfo();
+// uploadAppInfo.setApp_name(packageInfo.applicationInfo.loadLabel(getPackageManager()).toString());
+// uploadAppInfo.setPackage_name(packageInfo.packageName);
+// uploadAppInfo.setId(i);
+// String firstInstallTime = Utils.transferLongToDate(packageInfo.firstInstallTime);
+// uploadAppInfo.setInstall_time(firstInstallTime);
+// uploadAppInfo.setVersionCode(String.valueOf(packageInfo.versionCode));
+// // Log.e("mjsheng", "------------------" + uploadAppInfo);
+// if ((packageInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) == 1) {
+// } else {
+// //非系统应用
+// appList.add(uploadAppInfo);
+// }
+//
+//
+// }
+//
+// // Log.e("mjsheng", "UploadAppInfo========" + appList.toString());
+//
+// Gson gson = new Gson();
+// String jsonString = gson.toJson(appList);
+// Log.e("mjsheng", "json========" + jsonString);
+//
+// UploadAppInfoApi uploadAppInfoApi = Network.getUploadAppInfoApi();
+// uploadAppInfoApi.getUploadAppInfoApi(Configure.HTTP_KEY, Utils.getSerial(), jsonString)
+// .subscribeOn(Schedulers.io())
+// .observeOn(AndroidSchedulers.mainThread())
+// .subscribe(new Observer() {
+// @Override
+// public void onSubscribe(Disposable d) {
+//
+// }
+//
+// @Override
+// public void onNext(ResponseBody responseBody) {
+// try {
+// Log.e("mjhseng", "上传的结果" + responseBody.string());
+// } catch (IOException e) {
+// e.printStackTrace();
+// }
+// }
+//
+// @Override
+// public void onError(Throwable e) {
+// Log.e("mjsheng", "UploadAppInfoApi=onError:");
+// }
+//
+// @Override
+// public void onComplete() {
+//
+// }
+// });
+// }
+
+
+ private void initJpush() {
+ JPushInterface.init(this);
+ setAlias();
+
+ String rid = JPushInterface.getRegistrationID(OldActivity.this);
+ if (!rid.isEmpty()) {
+// ToastUtil.debugShow("RegId:" + rid);
+ Log.e("jiguang", "RegId:" + rid);
+ } else {
+// ToastUtil.show("Get registration fail, JPush init failed!");
+// Toast.makeText(this, "Get registration fail, JPush init failed!", Toast.LENGTH_SHORT).show();
+ }
+ JPushInterface.getAlias(this, new Random().nextInt(100));
+// JPushInterface.setAlias(this, Utils.getSerial(), new TagAliasCallback() {
+// @Override
+// public void gotResult(int i, String s, Set set) {
+// if (set == null) {
+// Log.e("mjhseng", "set is null");
+// } else {
+// Log.e("mjhseng", "set ---" + set.toString());
+// }
+// Log.e("JPushInterface", s + "---" + i + "---");
+// if (i == 0) {
+// Log.e("JPushInterface", "JPush绑定成功");
+// } else if (i == 6001) {
+// Log.e("JPushInterface", "无效的设置,用户名为空");
+// } else if (i == 6002) {
+// Log.e("JPushInterface", "设置超时,请重试");
+// timerImitate();
+// } else if (i == 6011) {
+// Log.e("JPushInterface", "短时间内操作过于频繁");
+// } else if (i == 996) {
+// Log.e("JPushInterface", "网络连接断开");
+// }
+// }
+// });
+
+ }
+
+ //重新设置jpush
+ private void timerImitate() {
+ Observable.timer(10000, TimeUnit.MILLISECONDS)
+ .observeOn(rx.android.schedulers.AndroidSchedulers.mainThread())
+ .subscribe(new Action1() {
+ @Override
+ public void call(Long aLong) {
+ Log.e("JPushInterface", "JPushInterface重新加载");
+ initJpush();//初始化极光推送
+ HTTPInterface.setJpushTags(OldActivity.this);
+ }
+ });
+ }
+
+
+ // 用来计算返回键的点击间隔时间
+ private long exitTime = 0;
+
+ @Override
+ public boolean onKeyDown(int keyCode, KeyEvent event) {
+ if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
+ lazyExit();
+ return true;
+ }
+
+ return super.onKeyDown(keyCode, event);
+ }
+
+ private void lazyExit() {
+ if (System.currentTimeMillis() - mPreClickTime > 1000) {
+ ToastUtil.show("再按一次,退出");
+ mPreClickTime = System.currentTimeMillis();
+ } else {
+ finish();
+ }
+ }
+
+ private void getAppLimitApi() {
+ AppLimitApi appLimitApi = NetInterfaceManager.getAppLimitApi();
+ appLimitApi.getAppLimitApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(ResponseBody responseBody) {
+ try {
+ String responString = responseBody.string();
+ Log.e("mjhseng", responString);
+ JSONObject jsonObject = new JSONObject(responString);
+ Integer code = jsonObject.optInt("code");
+ switch (code) {
+ case 200:
+ JSONObject data = jsonObject.getJSONObject("data");
+ String result = data.optString("result");
+ writeAppPackageList(result);
+ break;
+ default:
+ Log.e("mjhseng", "getAppLimitApi---code is -200");
+ break;
+ }
+ } catch (Exception e) {
+ Log.e("mjhseng", "getAppLimitApi---woring----" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("mjsheng", "getAppLimitApi=onError:");
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+ private void writeAppPackageList(String result) {
+ String appstore = "com.jiaoguanyi.appstore";
+ String store = "com.jiaoguanyi.store";
+ String info = "com.info.sn";
+// String iflytek = "com.estrongs.android.pop";
+ String jgy1 = "com.uiuios.jgy1";
+ String jgy2 = "com.uiuios.jgy2";
+ if (!TextUtils.isEmpty(result)) {
+ Log.e("writeAppPackageList", result);
+ if (!result.contains(appstore)) {
+ result = result + "," + appstore;
+ }
+ if (!result.contains(store)) {
+ result = result + "," + store;
+ }
+ if (!result.contains(jgy1)) {
+ result = result + "," + jgy1;
+ }
+ if (!result.contains(jgy2)) {
+ result = result + "," + jgy2;
+ }
+ if (!result.contains(info)) {
+ result = result + "," + info;
+ }
+ //人脸识别
+ boolean b = Settings.System.putString(getContentResolver(), "qch_app_forbid", result);
+ Log.e("mjsheng", "qch_app_forbid is :" + b + Settings.System.getString(getContentResolver(), "qch_app_forbid"));
+
+ } else {
+ Log.e("mjsheng", "writeAppPackageList is null:");
+
+ }
+ }
+
+ private void getDeselectID() {
+ DeselectIDApi deselectIDApi = NetInterfaceManager.getDeselectIDApi();
+ deselectIDApi.getDeselectIDApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+
+ }
+
+ @Override
+ public void onNext(ResponseBody responseBody) {
+ try {
+ String responString = responseBody.string();
+ Log.e("mjhseng", "应用联网管控::" + responString);
+ JSONObject jsonObject = new JSONObject(responString);
+ Integer code = jsonObject.optInt("code");
+ switch (code) {
+ case 200:
+ JSONObject data = jsonObject.getJSONObject("data");
+ String ids = data.optString("ids");
+ String packages = data.optString("package");
+ writeDeselectIDtoSystem(ids, packages);
+ break;
+ default:
+ Log.e("mjhseng", "getDeselectID---code is -200");
+ break;
+ }
+ } catch (Exception e) {
+ Log.e("mjhseng", "getDeselectID---woring----" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("mjsheng", "DeselectIDApi=onError:");
+ }
+
+ @Override
+ public void onComplete() {
+
+ }
+ });
+ }
+
+
+ private void autoUpdate(ResponseBody responseBody) {
+ try {
+ String responString = responseBody.string();
+ JSONObject object = new JSONObject(responString);
+ Integer code = object.optInt("code");
+ if (code == 200) {
+ JSONObject jsonObject = object.getJSONObject("data");
+ String url = jsonObject.optString("url");
+ int version_code = jsonObject.optInt("version_code");
+ Log.e("autoUpdate", "version_code: " + AppUtils.getAppVersionCode());
+
+ if (version_code > AppUtils.getAppVersionCode()) {
+ Aria.download(this)
+ .load(url) //读取下载地址
+ .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(url) + ".apk", true)
+ .setExtendField(BuildConfig.APPLICATION_ID)
+ .create(); //启动下载}}
+ }
+ }
+ } catch (Exception e) {
+ Log.e("mjhseng", "UpdateApi---woring----" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ private void getDeselectBrowerID() {
+ DeselectBrowserIDApi deselectBrowserIDApi = NetInterfaceManager.getDeselectBrowserIDApi();
+ deselectBrowserIDApi.getDeselectBrowserIDApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("mjhseng", "getDeselectBrowerID---onSubscribe");
+
+ }
+
+ @Override
+ public void onNext(ResponseBody responseBody) {
+ try {
+ String responString = responseBody.string();
+ Log.e("mjhseng", "浏览器ID管控::" + responString);
+ JSONObject jsonObject = new JSONObject(responString);
+ Integer code = jsonObject.optInt("code");
+ switch (code) {
+ case 200:
+ JSONObject data = jsonObject.getJSONObject("data");
+ String ids = data.optString("ids");
+ writeDeselectBrowserIDtoSystem(ids);
+ break;
+ default:
+ Log.e("mjhseng", "getDeselectBrowerID---code is -200");
+ break;
+ }
+ } catch (Exception e) {
+ Log.e("mjhseng", "getDeselectBrowerID---wroing----" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("mjsheng", "getDeselectBrowerID=onError:");
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("mjhseng", "getDeselectBrowerID---onComplete");
+ }
+ });
+ }
+
+ private void getNetAndLaunchSetting() {
+ NetAndLaunchApi netAndLaunchApi = NetInterfaceManager.getNetAndLaunchApi();
+ netAndLaunchApi.getNetAndLaunchApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("mjhseng", "getNetAndLaunchSetting---onSubscribe");
+
+ }
+
+ @Override
+ public void onNext(NetAndLaunchBean netAndLaunchBean) {
+ switch (netAndLaunchBean.getCode()) {
+ case 200:
+ setNetAndlaunch(netAndLaunchBean);
+ break;
+ default:
+// ToastUtils.showShort(netAndLaunchBean.getMsg());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("mjsheng", "getNetAndLaunchSetting=onError:");
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("mjhseng", "getNetAndLaunchSetting---onComplete");
+ }
+ });
+ }
+
+ private void getForceDownload() {
+ ForceDownloadApi forceDownloadApi = NetInterfaceManager.getForceDownloadApi();
+ forceDownloadApi.getForceDownloadApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("getForceDownload", "forceDownloadApi---onSubscribe");
+
+ }
+
+ @Override
+ public void onNext(ForceDownloadBean forceDownloadBean) {
+ switch (forceDownloadBean.getCode()) {
+ case 200:
+ Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
+ BaseApplication.getInstance().checkIsDownloading();
+ if (!BaseApplication.getInstance().isDownloading()) {
+ Aria.download(this).removeAllTask(true);
+ forceDownload(forceDownloadBean.getData());
+ } else {
+ Aria.download(this).resumeAllTask();
+ }
+ break;
+ case -200:
+ boolean qch_force_app = Settings.System.putString(OldActivity.this.getContentResolver(), "qch_force_app", "invalid");
+ Log.e("fht", "qch_force_app:" + qch_force_app);
+ break;
+ default:
+ Log.e("getForceDownload", forceDownloadBean.getMsg());
+ break;
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("getForceDownload", "forceDownloadApi=onError:");
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getForceDownload", "forceDownloadApi---onComplete");
+ }
+ });
+ }
+
+ // private void forceDownload(List data) {
+// if (data == null || data.size() <= 0) {
+// return;
+// }
+// for(int i=0;i data) {
+ if (data == null || data.size() <= 0) {
+ return;
+ }
+ getSelfDownload(data);
+ List list = new ArrayList<>();
+ for (int i = 0; i < data.size(); i++) {
+ ForceDownloadData forceDownloadData = data.get(i);
+ String app_name = forceDownloadData.getApp_name();
+ String app_package = forceDownloadData.getApp_package();
+ String app_url = forceDownloadData.getApp_url();
+ com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
+ jsonObject.put("app_name", app_name);
+ jsonObject.put("app_package", app_package);
+ int app_version_code = forceDownloadData.getApp_version_code();
+ Log.e("fht ", "packageName=" + app_package + ",URL= " + app_url + ",app_version_code=" + app_version_code);
+ if (data.get(i).getApp_package().equals("com.jiaoguanyi.appstore")) {
+ continue;//为自身的跳过下载
+ }
+ if (!list.contains(app_package)) {
+ list.add(app_package);
+ }
+ PackageManager pm = getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(app_package, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ Log.e("fht", "forceDownload=" + e.getMessage());
+ }
+ if (packageInfo != null) {
+ long appVersionCode;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ appVersionCode = packageInfo.getLongVersionCode();
+ } else {
+ appVersionCode = packageInfo.versionCode;
+ }
+ if (app_version_code > appVersionCode) {
+ Log.e("fht ", "download URL " + app_url);
+// Aria.download(this)
+// .load(app_url) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(app_package) + ".apk", true)
+// .setExtendField(jsonObject.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(this, app_url, jsonObject);
+ }
+ } else {
+ Log.e("fht ", "download URL " + app_url);
+// if (!SaveListUtils.isDownLoading(app_package)) {
+// Aria.download(this)
+// .load(app_url) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(app_package) + ".apk", true)
+// .setExtendField(jsonObject.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(this, app_url, jsonObject);
+
+// SaveListUtils.addDownLoadList(app_package);
+// }
+ }
+ }
+ SaveListUtils.setList(list);
+ SaveListUtils.sendForceAPP(this);
+ }
+
+ private void getSelfDownload(List forceDownloadDataList) {
+ for (ForceDownloadData forceDownloadData : forceDownloadDataList) {
+ if ("com.jiaoguanyi.store".equals(forceDownloadData.getApp_package())) {
+ if (!AppUtils.isAppInstalled("com.jiaoguanyi.store")) {
+ com.alibaba.fastjson.JSONObject jsonObject = new com.alibaba.fastjson.JSONObject();
+ jsonObject.put("app_name", forceDownloadData.getApp_name());
+ jsonObject.put("app_package", forceDownloadData.getApp_package());
+// Aria.download(this)
+// .load(forceDownloadData.getApp_url()) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString("com.jiaoguanyi.store") + ".apk", true)
+// .setExtendField(jsonObject.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(this, forceDownloadData.getApp_url(), jsonObject);
+
+ }
+ } else {
+// Log.e("fht", "未上传应用");
+ }
+ }
+ }
+
+ private void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean) {
+ Log.e("setNetAndlaunch", netAndLaunchBean.toString());
+ String net_ok = "";
+ String net_not = "";
+ String launch = "";
+ String camera_ok = "";
+ String camera_not = "";
+ String upgrade_ok = "";
+ String upgrade_not = "";
+ String slide_ok = "";
+ String slide_not = "";
+
+ List data = netAndLaunchBean.getData();
+ for (int i = 0; i < data.size(); i++) {
+ NetAndLaunchData netAndLaunchData = data.get(i);
+ String app_package = netAndLaunchData.getApp_package();
+ int is_auto = netAndLaunchData.getIs_auto();
+ int is_network = netAndLaunchData.getIs_network();
+ int is_camera = netAndLaunchData.getIs_camera();
+ int is_upgrade = netAndLaunchData.getIs_upgrade();
+ int is_slide = netAndLaunchData.getIs_slide();
+
+ if (is_auto == 1) {
+ launch += app_package + ",";
+ }
+ if (is_network == 1) {
+ net_ok += app_package + ",";
+ } else {
+ net_not += app_package + ",";
+ }
+
+ if (is_camera == 1) {
+ camera_ok += app_package + ",";
+ } else {
+ camera_not += app_package + ",";
+ }
+ if (is_upgrade == 1) {
+ upgrade_ok += app_package + ",";
+ } else {
+ upgrade_not += app_package + ",";
+ }
+ if (is_slide == 1) {
+ slide_ok += app_package + ",";
+ } else {
+ slide_not += app_package + ",";
+ }
+ }
+
+ if (!TextUtils.isEmpty(launch)) {
+ launch = launch.substring(0, launch.length() - 1);
+ }
+ if (!TextUtils.isEmpty(net_ok)) {
+ net_ok = net_ok.substring(0, net_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(net_not)) {
+ net_not = net_not.substring(0, net_not.length() - 1);
+ }
+ if (!TextUtils.isEmpty(camera_ok)) {
+ camera_ok = camera_ok.substring(0, camera_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(camera_not)) {
+ camera_not = camera_not.substring(0, camera_not.length() - 1);
+ }
+ if (!TextUtils.isEmpty(upgrade_ok)) {
+ upgrade_ok = upgrade_ok.substring(0, upgrade_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(upgrade_not)) {
+ upgrade_not = upgrade_not.substring(0, upgrade_not.length() - 1);
+ }
+ if (!TextUtils.isEmpty(slide_ok)) {
+ slide_ok = slide_ok.substring(0, slide_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(slide_not)) {
+ slide_not = slide_not.substring(0, slide_not.length() - 1);
+ boolean writeSucceed = Settings.System.putString(this.getContentResolver(), "qch_disable_slide", slide_not);
+ Log.e("setNetAndlaunch", "qch_disable_slide=" + writeSucceed + ":" + slide_not);
+ } else {
+ boolean writeSucceed = Settings.System.putString(this.getContentResolver(), "qch_disable_slide", "Invalid");
+ Log.e("setNetAndlaunch", "qch_disable_slide ok=" + writeSucceed + ":" + slide_ok);
+ }
+ Utils.writeDisableUpdateList(this, upgrade_not.split(","), upgrade_ok.split(","));
+
+ Log.e("setNetAndlaunch", "launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not);
+ boolean qch_app_power_on = Settings.System.putString(OldActivity.this.getContentResolver(), "qch_app_power_on", launch);
+// Intent netControlIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY_DIS);
+// netControlIntent.putExtra("package_name", net_not);
+// sendBroadcast(netControlIntent);
+//
+// Intent netControlNotIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY);
+// netControlNotIntent.putExtra("package_name", net_ok);
+// sendBroadcast(netControlNotIntent);
+ if (!net_not.equals("")) {
+ String[] bans = net_not.split(",");
+ Settings.System.putString(getContentResolver(), "qch_jgy_network_disallow", net_not);
+ Log.e("setNetAndlaunch", "ban::" + net_not);
+
+ }
+ BaseApplication.getInstance().setFinished(true);
+ if (!net_ok.equals("")) {
+ String[] nots = net_ok.split(",");
+ Settings.System.putString(getContentResolver(), "qch_jgy_network_allow", net_ok);
+ Log.e("setNetAndlaunch", "not::" + net_ok);
+ }
+// Intent intent2 = new Intent("qch_camera_forbid");
+// intent2.putExtra("camera_package_name", camera_not).setPackage("com.android.settings");
+// sendBroadcast(intent2);
+// Intent intent1 = new Intent("qch_camera_open");
+// intent1.putExtra("camera_package_name", camera_ok).setPackage("com.android.settings");
+// sendBroadcast(intent1);
+ }
+
+ private void writeDeselectBrowserIDtoSystem(String ids) {
+ if (!TextUtils.isEmpty(ids)) {
+ boolean deselectBrowserArray = Settings.System.putString(getContentResolver(), "DeselectBrowserArray", ids);
+ Log.e("SystemSetting", "DeselectBrowserArray---------" + deselectBrowserArray);
+
+
+ } else {
+ Log.e("mjsheng", "writeDeselectBrowserIDtoSystem is null:");
+
+ }
+ }
+
+ /**
+ * @param s1 需要管控的ID
+ * @param result 应用程序包名
+ */
+ private void writeDeselectIDtoSystem(String s1, String result) {
+ if (!TextUtils.isEmpty(s1) && !TextUtils.isEmpty(result)) {
+ String appstore = "com.jiaoguanyi.appstore";
+ String store = "com.jiaoguanyi.store";
+ Log.e("writeDeselectIDtoSystem", result);
+ if (!result.contains(appstore)) {
+ result = result + "," + appstore;
+ }
+ if (!result.contains(store)) {
+ result = result + "," + store;
+ }
+ String olddeselectViewArray = Settings.System.getString(this.getContentResolver(), "qch_app_forbid_id");
+ Log.e("SystemSetting", "olddeselectViewArray---------" + olddeselectViewArray);
+ Settings.System.putString(this.getContentResolver(), "qch_app_forbid_id", result);
+ Settings.System.putString(this.getContentResolver(), "DeselectViewArray", s1);
+ Log.e("qch_app_forbid_id", "qch_app_forbid_id---------" + result);
+ Log.e("SystemSetting", "deselectViewArray---------" + s1);
+ } else {
+ Log.e("mjsheng", "writeDeselectIDtoSystem is null:");
+ Settings.System.putString(this.getContentResolver(), "DeselectViewArray", "Invalid");
+ }
+ }
+
+ private void getSystemSetting() {
+ final SystemSettingApi systemSettingApi = NetInterfaceManager.getSystemSettingApi();
+ systemSettingApi.getSystemSettingApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ }
+
+ @Override
+ public void onNext(ResponseBody responseBody) {
+ try {
+ // Log.e("mjsheng", "systemSettingBean::" + systemSettingBean);
+ String responString = responseBody.string();
+ Log.e("mjsheng", "系统管控::" + responString);
+ JSONObject jsonObject = new JSONObject(responString);
+ Integer code = jsonObject.optInt("code");
+ switch (code) {
+ case 200:
+ JSONObject data = jsonObject.getJSONObject("data");
+ SettingSysData(data);
+ break;
+ default:
+ Log.e("mjhseng", "getSystemSetting---code is -200");
+ break;
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ Log.e("initmjsheng", "1getSystemSetting---IOException----" + e.getMessage());
+ } catch (JSONException e) {
+ e.printStackTrace();
+ Log.e("initmjsheng", "1getSystemSetting---JSONException----" + e.getMessage());
+ }
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("mjsheng", "getSystemSetting=onError:");
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("mjhseng", "getSystemSetting---onComplete");
+ }
+ });
+ }
+
+ private void SettingSysData(JSONObject data) {
+ SPUtils.put(OldActivity.this, "first_connect", 1);
+ SysSettingUtils.setSystemSetting(OldActivity.this, data.toString());
+
+//// try {
+// int setting_call = changeNum(data.optInt("setting_call"));
+// boolean qch_call_forbid = Settings.System.putInt(getContentResolver(), "qch_call_forbid", setting_call);
+// Log.e("SystemSetting", "qch_call_forbid---------" + qch_call_forbid);
+//
+// int setting_phone = changeNum(data.optInt("setting_phone"));
+// boolean qch_white_list_on = Settings.System.putInt(getContentResolver(), "qch_white_list_on", setting_phone);
+// Log.e("SystemSetting", "qch_white_list_on---------" + qch_white_list_on);
+//
+// String setting_phones = data.optString("setting_phones");
+// boolean qch_white_list_Array = Settings.System.putString(getContentResolver(), "qch_white_list_Array", setting_phones);
+// // ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+qch_white_list_Array+"---"+qch_call_forbid);
+// Log.e("SystemSetting", "qch_white_list_Array---------" + qch_white_list_Array + "---" + setting_phones);
+//
+// int setting_memory = changeNum(data.optInt("setting_memory"));
+// boolean qch_sdcard_forbid_on = Settings.System.putInt(getContentResolver(), "qch_sdcard_forbid_on", setting_memory);
+// Log.e("SystemSetting", "qch_sdcard_forbid_on---------" + qch_sdcard_forbid_on);
+//
+//
+// //USB数据功能管控
+// //仅充电:usb_charge
+// //MTP模式:usb_mtp
+// //Midi模式:usb_midi
+// String setting_usb = data.optString("setting_usb");
+// if (!BuildConfig.DEBUG) {
+// boolean qch_usb_choose = Settings.System.putString(getContentResolver(), "qch_usb_choose", setting_usb);
+// Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose);
+// String usbStatus = "";
+// switch (setting_usb) {
+// case "usb_charge":
+// usbStatus = "qch_action_usb_usb_charge";
+// break;
+// case "usb_mtp":
+// usbStatus = "qch_action_usb_usb_mtp";
+// break;
+// case "usb_midi":
+// usbStatus = "qch_action_usb_usb_midi";
+// break;
+//
+// }
+// Intent usbIntent = new Intent(usbStatus).setPackage("com.android.settings");
+// sendBroadcast(usbIntent);
+// }
+//
+//
+// //otg开关
+//// int setting_otg = changeNum(data.optInt("setting_otg"));
+//// Log.e("SystemSetting", "setting_otg---------" + setting_otg);
+//// String otgStatus = "";
+//// switch (setting_otg) {
+//// case 0:
+//// otgStatus = "qch_otg_open";
+//// break;
+//// case 1:
+//// otgStatus = "qch_otg_forbid";
+//// break;
+//// }
+//// Intent otgIntent = new Intent(otgStatus);
+//// sendBroadcast(otgIntent);
+//
+// //蓝牙开关
+// int setting_bht = changeNum(data.optInt("setting_bht"));//总开关
+// int setting_bhtvideo = changeNum(data.optInt("setting_bhtvideo"));//蓝牙音频开关
+// int setting_bluetooth = changeNum(data.optInt("setting_bluetooth"));//蓝牙传输开关
+//
+// boolean qch_bht_forbid_on = Settings.System.putInt(getContentResolver(), "qch_bht_forbid_on", setting_bht);//写入系统数据库
+// Log.e("SystemSetting", "qch_bht_forbid_on:" + qch_bht_forbid_on);
+// if (qch_bht_forbid_on) {//成功
+// if (null == mBluetoothAdapter) {
+// mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//获取默认蓝牙适配器
+// }
+// if (setting_bht == 0) {//蓝牙总开关开启
+// String setting_context = data.optString("setting_context");//
+// if (setting_bhtvideo == 0) {
+// if (null != setting_context && !setting_context.equals("") && !setting_context.equals(" ") && !setting_context.equals("null")) {
+// Log.e("SystemSetting", "setting_context:" + setting_context);
+// Settings.System.putString(getContentResolver(), "qch_bhtvideo_forbid_on", setting_context);
+// } else {
+// Settings.System.putString(getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
+// }
+// } else if (setting_bhtvideo == 1) {
+// Settings.System.putString(getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
+// }
+// Settings.System.putInt(getContentResolver(), "qch_bt_forbid_on", setting_bluetooth);
+// } else {
+// mBluetoothAdapter.disable();//设置关闭时关闭蓝牙
+// }
+//
+// }
+//
+// //热点
+//// ConnectivityManager mConnectivityManager =(ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+//// mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
+//// try {
+//// Method method = mConnectivityManager.getClass().getMethod("stopTethering", Integer.TYPE);
+//// method.invoke(mConnectivityManager, 0);
+//// } catch (NoSuchMethodException | IllegalAccessException | InvocationTargetException e) {
+//// e.printStackTrace();
+//// }
+//
+//// ConnectivityManager connManager = (ConnectivityManager) getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
+////
+//// Field iConnMgrField = null;
+//// try {
+//// iConnMgrField = connManager.getClass().getDeclaredField("mService");
+//// iConnMgrField.setAccessible(true);
+//// Object iConnMgr = iConnMgrField.get(connManager);
+//// Class> iConnMgrClass = Class.forName(iConnMgr.getClass().getName());
+////
+////// if(isEnable){
+////// Method startTethering = iConnMgrClass.getMethod("startTethering", int.class, ResultReceiver.class, boolean.class,String.class);
+////// startTethering.invoke(iConnMgr, 0, null, true,context.getPackageName());
+////// }else{
+//// Method startTethering = iConnMgrClass.getMethod("stopTethering", int.class, String.class);
+//// startTethering.invoke(iConnMgr, 0, getPackageName());
+////// }
+////
+//// } catch (NoSuchFieldException e) {
+//// e.printStackTrace();
+//// } catch (NoSuchMethodException e) {
+//// e.printStackTrace();
+//// } catch (IllegalAccessException e) {
+//// e.printStackTrace();
+//// } catch (InvocationTargetException e) {
+//// e.printStackTrace();
+//// } catch (ClassNotFoundException e) {
+//// e.printStackTrace();
+//// }
+//
+// int setting_hotspot = changeNum(data.optInt("setting_hotspot"));
+// if (setting_hotspot == 1) {
+// Intent intent = new Intent();
+// intent.setAction("qch_hotspot_close");
+// intent.setPackage("com.android.settings");
+// sendStickyBroadcast(intent);
+// }
+// boolean qch_hotspot_forbid_on = Settings.System.putInt(getContentResolver(), "qch_hotspot_forbid_on", setting_hotspot);//写入系统数据库
+// Log.e("SystemSetting", "qch_hotspot_forbid_on---------" + setting_hotspot);
+// Log.e("SystemSetting", "qch_hotspot_forbid_on---------" + qch_hotspot_forbid_on);
+//
+// //系统导航条显示开关
+// int setting_navigation = changeNum(data.optInt("setting_navigation"));
+// boolean qch_hide_navigationBar = Settings.System.putInt(getContentResolver(), "qch_hide_NavigationBar", setting_navigation);
+// Log.e("SystemSetting", "qch_hide_navigationBar---------" + qch_hide_navigationBar);
+//
+// String navigationStatus = "";
+// switch (setting_navigation) {
+// case 0:
+// navigationStatus = "qch_show_NavigationBar";
+// break;
+// case 1:
+// navigationStatus = "qch_hide_NavigationBar";
+// break;
+//
+// }
+// Intent navIntent = new Intent(navigationStatus).setPackage("com.android.systemui");
+// sendBroadcast(navIntent);
+//
+//
+// //状态栏显示开关
+// int setting_statusbar = changeNum(data.optInt("setting_statusbar"));
+// int oldNum = Settings.System.getInt(MainActivity.this.getContentResolver(), "qch_hide_statusBar", 0);
+// if (oldNum != setting_statusbar) {
+// boolean qch_hide_statusBar = Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_hide_statusBar", setting_statusbar);
+// Log.e("SystemSetting", "qch_hide_statusBar---------" + qch_hide_statusBar);
+// String statusbarStatus = "";
+// switch (setting_statusbar) {
+// case 0:
+// statusbarStatus = "qch_show_statusBar";
+// break;
+// case 1:
+// statusbarStatus = "qch_hide_statusBar";
+// break;
+// }
+// Intent statusIntent = new Intent(statusbarStatus).setPackage("com.android.systemui");
+// MainActivity.this.sendBroadcast(statusIntent);
+// }
+//
+// //摄像头开关
+// int setting_camera = changeNum(data.optInt("setting_camera"));
+// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_camera", setting_camera);
+//// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.mediatek.camera");
+// Log.e("SystemSetting", "setting_camera---------" + setting_camera);
+// String cameraStatus = "";
+// switch (setting_camera) {
+// case 0:
+// cameraStatus = "qch_camera_open";
+// break;
+// case 1:
+// cameraStatus = "qch_camera_forbid";
+// break;
+// }
+// Intent cameraIntent = new Intent(cameraStatus).setPackage("com.android.settings");
+// sendBroadcast(cameraIntent);
+//
+// //added:2019.12.6
+// //设置5个app的开关
+// //时钟
+// int deskclock = changeNum(data.optInt("setting_clock"));
+// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_deskclock", deskclock);
+// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.deskclock");
+// Log.e("SystemSetting", "qch_app_deskclock" + deskclock);
+// //录音机
+// int soundrecorder = changeNum(data.optInt("setting_recording"));
+// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_soundrecorder", soundrecorder);
+// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.soundrecorder");
+// Log.e("SystemSetting", "qch_app_soundrecorder" + soundrecorder);
+// //音乐
+// int music = changeNum(data.optInt("setting_music"));
+// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_music", music);
+// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.music");
+// Log.e("SystemSetting", "qch_app_music" + music);
+// //图库
+// int gallery = changeNum(data.optInt("setting_picture"));
+// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_gallery", gallery);
+// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.gallery3d");
+// Log.e("SystemSetting", "qch_app_gallery" + gallery);
+// //壁纸
+// int wallpaper = changeNum(data.optInt("setting_wallpaper"));
+// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_wallpaper", wallpaper);
+// Log.e("SystemSetting", "qch_app_wallpaper" + wallpaper);
+// //文件管理器
+// int filemanager = changeNum(data.optInt("setting_file"));
+// Settings.System.putInt(MainActivity.this.getContentResolver(), "qch_app_filemanager", filemanager);
+// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.mediatek.filemanager");
+// } else {
+// ApkUtils.hideSystemSettingAPP(MainActivity.this, "com.android.documentsui");
+// }
+// Log.e("SystemSetting", "qch_app_filemanager" + filemanager);
+//
+//// } catch (Exception e) {
+//// e.printStackTrace();
+//// Log.e("mjhseng", "SettingSysData---2error::" + e.getMessage());
+//// }
+ }
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/base/BaseActivity.java b/app/src/main/java/com/mjsheng/myappstore/base/BaseActivity.java
new file mode 100644
index 0000000..819fb84
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/base/BaseActivity.java
@@ -0,0 +1,38 @@
+package com.mjsheng.myappstore.base;
+
+import android.os.Bundle;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+public abstract class BaseActivity extends AppCompatActivity {
+ @Override
+ protected void onCreate(@Nullable Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(this.getLayoutId());
+ initView();
+ initData();
+ }
+
+ @Override
+ protected void onDestroy() {
+ super.onDestroy();
+ }
+
+ /**
+ * 设置布局
+ *
+ */
+ public abstract int getLayoutId();
+
+ /**
+ * 初始化视图
+ */
+ public abstract void initView();
+
+
+ /**
+ * 初始化数据
+ */
+ public abstract void initData();
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/MyApplication.java b/app/src/main/java/com/mjsheng/myappstore/base/BaseApplication.java
similarity index 84%
rename from app/src/main/java/com/mjsheng/myappstore/MyApplication.java
rename to app/src/main/java/com/mjsheng/myappstore/base/BaseApplication.java
index 1535302..b731df1 100644
--- a/app/src/main/java/com/mjsheng/myappstore/MyApplication.java
+++ b/app/src/main/java/com/mjsheng/myappstore/base/BaseApplication.java
@@ -1,6 +1,5 @@
-package com.mjsheng.myappstore;
+package com.mjsheng.myappstore.base;
-import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
@@ -15,42 +14,35 @@ import android.os.Looper;
import android.os.PowerManager;
import android.os.Process;
import android.provider.Settings;
-
-import androidx.multidex.MultiDexApplication;
-
import android.text.TextUtils;
import android.util.Log;
+import androidx.multidex.MultiDexApplication;
+
import com.alibaba.fastjson.JSON;
-import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
-import com.amap.api.location.AMapLocationClientOption;
-import com.amap.api.location.AMapLocationListener;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
-import com.blankj.utilcode.util.LogUtils;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheEntity;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.cookie.store.PersistentCookieStore;
-import com.mjsheng.myappstore.statistics.AppInformation;
-import com.mjsheng.myappstore.statistics.StatisticsInfo;
-import com.mjsheng.myappstore.activity.MainActivity;
-import com.mjsheng.myappstore.comm.CommonDatas;
+import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.jpush.TagAliasOperatorHelper;
+import com.mjsheng.myappstore.manager.AmapManager;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
import com.mjsheng.myappstore.network.HTTPInterface;
-import com.mjsheng.myappstore.network.Network;
-import com.mjsheng.myappstore.network.api.newapi.GetLockState;
+import com.mjsheng.myappstore.network.URLAddress;
+import com.mjsheng.myappstore.network.api.newapi.GetLockStateApi;
import com.mjsheng.myappstore.receiver.NewAppReceiver;
import com.mjsheng.myappstore.server.GuardService;
-import com.mjsheng.myappstore.server.InitJpushServer;
-import com.mjsheng.myappstore.server.MyDownloadService;
+import com.mjsheng.myappstore.server.MainService;
import com.mjsheng.myappstore.server.StepService;
-import com.mjsheng.myappstore.network.URLAddress;
-import com.mjsheng.myappstore.utils.MySQLData;
+import com.mjsheng.myappstore.statistics.AppInformation;
+import com.mjsheng.myappstore.statistics.StatisticsInfo;
+import com.mjsheng.myappstore.utils.JGYUtils;
import com.mjsheng.myappstore.utils.NetworkUtils;
-import com.mjsheng.myappstore.utils.SPUtils;
import com.mjsheng.myappstore.utils.SystemUtils;
import com.mjsheng.myappstore.utils.ToastUtil;
import com.mjsheng.myappstore.utils.Utils;
@@ -60,11 +52,7 @@ import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
-import java.text.SimpleDateFormat;
import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.LinkedList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
@@ -80,29 +68,17 @@ import okhttp3.Response;
import okhttp3.ResponseBody;
import rx.Observable;
import rx.functions.Action1;
-import uk.co.chrisjenx.calligraphy.CalligraphyConfig;
/**
* Created by Administrator on 2016/2/17 0017.
*/
//public class MyApplication extends MultiDexApplication implements Thread.UncaughtExceptionHandler {
-public class MyApplication extends MultiDexApplication {
- private final String TAG = MyApplication.class.getSimpleName();
- public static String userName = null;
+public class BaseApplication extends MultiDexApplication {
+ private final String TAG = BaseApplication.class.getSimpleName();
+
public static Context context;
- public static boolean LOOP_STOPING = false; //停止 循环
- public static MainActivity mainActivity;
- public static int ageType = 1;
- private static int mSelectTimeLong = 10;
- private static MyApplication instance;
- private Date mStartTime;
- private Date mEndTime;
- private Calendar mCurrentCalendar = null;
- private SimpleDateFormat mDateFormat = null;
- private static List activityList = new LinkedList();
- private Handler mHandler;
- public static AMapLocationClient locationClient = null;
+ private static BaseApplication instance;
public static Context getAppContext() {
@@ -110,9 +86,9 @@ public class MyApplication extends MultiDexApplication {
}
// 单例模式中获取唯一的ExitApplication实例
- public static MyApplication getInstance() {
+ public static BaseApplication getInstance() {
if (null == instance) {
- instance = new MyApplication();
+ instance = new BaseApplication();
}
return instance;
}
@@ -122,21 +98,21 @@ public class MyApplication extends MultiDexApplication {
public void onCreate() {
super.onCreate();
if (SystemUtils.IsMainProcessName(this, Process.myPid())) {
+ //非主进程不初始化
init();
}
}
private void init() {
+ NetInterfaceManager.init(this);
+ JGYUtils.init(this);
Configuration config = getResources().getConfiguration();
int smallestScreenWidthDp = config.smallestScreenWidthDp;
Log.e("mjsheng", "smallestScreenWidthDp=" + smallestScreenWidthDp);
- //by mjsheng 激活
- MySQLData.SetData(this, CommonDatas.SP_USER_VIP, "1");
-
// CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
- // .setDefaultFontPath("fonts/1234.ttf")
- // .setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
+// .setDefaultFontPath("fonts/1234.ttf")
+// .setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
// .setFontAttrId(R.attr.fontPath)
// .build()
// );
@@ -147,86 +123,33 @@ public class MyApplication extends MultiDexApplication {
// 初始化 JPush
//JPushInterface.init(this);
//解锁设备不需要初始化
- context = getApplicationContext();
- //Thread.setDefaultUncaughtExceptionHandler(this);
- mDateFormat = new SimpleDateFormat("HH:mm");
- initOKHttp();
+ context = getApplicationContext();
+
+ initOKHttp();
Aria.init(this);
Aria.get(this).getDownloadConfig().setMaxTaskNum(1);
Aria.get(this).getDownloadConfig().setConvertSpeed(true);
-
ToastUtil.init(this);
if (!BuildConfig.DEBUG) {
catchException();
}
- mHandler = new Handler();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// 8.0之后需要在
registmNewAppReceiver();
- startService(new Intent(this, InitJpushServer.class));
+ startService(new Intent(this, MainService.class));
startService(new Intent(this, StepService.class));
startService(new Intent(this, GuardService.class));
- startService(new Intent(this, MyDownloadService.class));
}
registerTimeReceiver();
registerBatteryReceiver();
registerNetworkReceiver();
//忽略电池优化
// ignoreBatteryOptimization(this);
-
- initAmap();
- }
-
- public static AMapLocationClient getLocationClient() {
- if (null == locationClient) {
- initAmap();
- }
- return locationClient;
- }
-
- private static void initAmap() {
- locationClient = new AMapLocationClient(context);
- AMapLocationClientOption option = new AMapLocationClientOption();
- option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
- option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
- option.setNeedAddress(true);
- //获取一次定位结果:
- //该方法默认为false。
- option.setOnceLocation(true);
- //获取最近3s内精度最高的一次定位结果:
- //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。
- // 如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
- option.setOnceLocationLatest(true);
- locationClient.setLocationOption(option);
- //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
- //设置定位监听
- locationClient.setLocationListener(new AMapLocationListener() {
- @Override
- public void onLocationChanged(AMapLocation aMapLocation) {
- StringBuffer sb = new StringBuffer();
- //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明
- if (aMapLocation.getErrorCode() == 0) {
- sb.append(aMapLocation.getAddress() + "\n");
- SPUtils.put(context, "AmapAddress", aMapLocation.getAddress());
- SPUtils.put(context, "longitude", aMapLocation.getLongitude());
- SPUtils.put(context, "latitude", aMapLocation.getLatitude());
- } else {
- //定位失败
- sb.append("定位失败" + "\n");
- SPUtils.put(context, "AmapError", aMapLocation.getErrorInfo());
- }
- Log.e("AmapAddress", (String) SPUtils.get(context, "AmapAddress", ""));
- Log.e("AmapError", (String) SPUtils.get(context, "AmapError", ""));
- Log.e("addr", sb.toString());
- }
- });
- //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
- locationClient.stopLocation();
- locationClient.startLocation();
+ AmapManager.init(this);
}
@@ -249,7 +172,6 @@ public class MyApplication extends MultiDexApplication {
}
}
-
private NewAppReceiver mNewAppReceiver;
private void registmNewAppReceiver() {
@@ -287,10 +209,9 @@ public class MyApplication extends MultiDexApplication {
Log.e(TAG, "action:" + action);
if (action.equals(Intent.ACTION_SCREEN_ON)) {
long time = System.currentTimeMillis();
- if (null != locationClient) {
- locationClient.stopLocation();
- locationClient.startLocation();
- }
+ AMapLocationClient aMapLocationClient = AmapManager.getInstance().getLocationClient();
+ aMapLocationClient.stopLocation();
+ aMapLocationClient.startLocation();
getLockState("2", String.valueOf(time));
}
// else if (action.equals(Intent.ACTION_USER_PRESENT)) {
@@ -351,7 +272,6 @@ public class MyApplication extends MultiDexApplication {
System.exit(0);
}
}
-
}
private void registerBatteryReceiver() {
@@ -382,8 +302,8 @@ public class MyApplication extends MultiDexApplication {
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 0);
int elec = (level * 100) / scale;
Log.e(TAG, "electricity:=" + elec + "%");
- if (elec == 80 || elec == 50 || elec == 30) {
- startService(new Intent(getBaseContext(), InitJpushServer.class));
+ if (elec == 50) {
+ startService(new Intent(getBaseContext(), MainService.class));
}
} else if (Intent.ACTION_POWER_CONNECTED.equals(action)
|| Intent.ACTION_POWER_DISCONNECTED.equals(action)
@@ -391,9 +311,8 @@ public class MyApplication extends MultiDexApplication {
|| Intent.ACTION_BATTERY_OKAY.equals(action)
) {
Log.e(TAG, action);
- startService(new Intent(getBaseContext(), InitJpushServer.class));
+ startService(new Intent(getBaseContext(), MainService.class));
}
-
}
}
@@ -424,7 +343,7 @@ public class MyApplication extends MultiDexApplication {
}
if (NetworkUtils.isConnected(getBaseContext())) {
Log.e(TAG, "NetworkStateReceiver: 网络连接成功");
- startService(new Intent(getBaseContext(), InitJpushServer.class));
+ startService(new Intent(getBaseContext(), MainService.class));
} else {
Log.e(TAG, "NetworkStateReceiver: 网络连接失败");
}
@@ -445,7 +364,7 @@ public class MyApplication extends MultiDexApplication {
}
private void getLockState(String status, String time) {
- GetLockState getLockState = Network.getLockState();
+ GetLockStateApi getLockState = NetInterfaceManager.getLockState();
getLockState.getLockState(Utils.getSerial(), status, time)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@@ -657,7 +576,6 @@ public class MyApplication extends MultiDexApplication {
.setCookieStore(new PersistentCookieStore()) //cookie持久化存储,如果cookie不过期,则一直有效
//可以设置https的证书,以下几种方案根据需要自己设置 方法一:信任所有证书,不安全有风险
.setCertificates();
-
// com.lzy.okserver.download.DownloadManager downloadManager = DownloadService.getDownloadManager();
// downloadManager.setTargetFolder(StorageUtils.getFileRoot(this));
// downloadManager.setTargetFolder(PathUtils.getExternalDownloadsPath() + "/jgy/");
@@ -682,8 +600,12 @@ public class MyApplication extends MultiDexApplication {
localAppList.add(appInformation);
}
}
- } else Log.e("fht", "今日没有打开的应用");
- } else Log.e("fht", "获取信息失败");
+ } else {
+ Log.e("fht", "今日没有打开的应用");
+ }
+ } else {
+ Log.e("fht", "获取信息失败");
+ }
JSONObject data = new JSONObject();
JSONArray appinfo = new JSONArray();
@@ -756,7 +678,7 @@ public class MyApplication extends MultiDexApplication {
synchronized public void getWhitePackageList() {
OkGo.post(URLAddress.SET_WHITE_PACKAGE_LIST)
.params("sn", Utils.getSerial())
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.execute(new StringCallback() {
@Override
public void onSuccess(String s, Call call, Response response) {
@@ -785,7 +707,7 @@ public class MyApplication extends MultiDexApplication {
String appstore = "com.jiaoguanyi.appstore";
String store = "com.jiaoguanyi.store";
if (!TextUtils.isEmpty(result)) {
- LogUtils.e(result);
+ Log.e("writeAppPackageList", result);
if (!result.contains(appstore)) {
result = result + "," + appstore;
}
@@ -920,19 +842,15 @@ public class MyApplication extends MultiDexApplication {
public void checkIsDownloading() {
List list = Aria.download(this).getDRunningTask();
if (list == null || list.size() == 0) {
- MyApplication.getInstance().setDownloadState(false);
+ BaseApplication.getInstance().setDownloadState(false);
} else {
- MyApplication.getInstance().setDownloadState(true);
+ BaseApplication.getInstance().setDownloadState(true);
}
- Log.e("MyApplication", "isDownloading=" + MyApplication.getInstance().isDownloading());
+ Log.e("MyApplication", "isDownloading=" + BaseApplication.getInstance().isDownloading());
}
@Override
public void onTerminate() {
super.onTerminate();
- //销毁时,需要销毁定位client
- if (null != locationClient) {
- locationClient.onDestroy();
- }
}
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/base/BasePresenter.java b/app/src/main/java/com/mjsheng/myappstore/base/BasePresenter.java
new file mode 100644
index 0000000..ba9ab2e
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/base/BasePresenter.java
@@ -0,0 +1,10 @@
+package com.mjsheng.myappstore.base;
+
+import androidx.annotation.NonNull;
+
+public interface BasePresenter {
+
+ void attachView(@NonNull V view);
+
+ void detachView();
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/base/BaseView.java b/app/src/main/java/com/mjsheng/myappstore/base/BaseView.java
new file mode 100644
index 0000000..0d85d1e
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/base/BaseView.java
@@ -0,0 +1,4 @@
+package com.mjsheng.myappstore.base;
+
+public interface BaseView {
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/Appground.java b/app/src/main/java/com/mjsheng/myappstore/bean/Appground.java
index 3973d57..dac91a3 100644
--- a/app/src/main/java/com/mjsheng/myappstore/bean/Appground.java
+++ b/app/src/main/java/com/mjsheng/myappstore/bean/Appground.java
@@ -3,6 +3,7 @@ package com.mjsheng.myappstore.bean;
import java.io.Serializable;
public class Appground implements Serializable {
+ private static final long serialVersionUID = 4623189862812297724L;
private String packages;
private String address;
diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/BaseResponse.java b/app/src/main/java/com/mjsheng/myappstore/bean/BaseResponse.java
index 78162e3..701fd74 100644
--- a/app/src/main/java/com/mjsheng/myappstore/bean/BaseResponse.java
+++ b/app/src/main/java/com/mjsheng/myappstore/bean/BaseResponse.java
@@ -17,10 +17,6 @@ public class BaseResponse implements Serializable {
@NonNull
@Override
public String toString() {
- return "{\n" +//
- "\tcode=" + code + "\n" +//
- "\tmsg='" + msg + "\'\n" +//
- "\tdata=" + data + "\n" +//
- '}';
+ return "{" + "code:" + code + "," + "msg:" + msg + "," + "data:" + data + "," + '}';
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/BrowserBookmarks.java b/app/src/main/java/com/mjsheng/myappstore/bean/BrowserBookmarks.java
new file mode 100644
index 0000000..3842aa4
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/bean/BrowserBookmarks.java
@@ -0,0 +1,25 @@
+package com.mjsheng.myappstore.bean;
+
+import java.io.Serializable;
+
+public class BrowserBookmarks implements Serializable {
+ private static final long serialVersionUID = 596864357553413994L;
+ private String homepage;
+ private String labelpage;
+
+ public String getHomepage() {
+ return homepage;
+ }
+
+ public void setHomepage(String homepage) {
+ this.homepage = homepage;
+ }
+
+ public String getLabelpage() {
+ return labelpage;
+ }
+
+ public void setLabelpage(String labelpage) {
+ this.labelpage = labelpage;
+ }
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/BrowserData.java b/app/src/main/java/com/mjsheng/myappstore/bean/BrowserData.java
new file mode 100644
index 0000000..ea4018b
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/bean/BrowserData.java
@@ -0,0 +1,25 @@
+package com.mjsheng.myappstore.bean;
+
+import java.io.Serializable;
+
+public class BrowserData implements Serializable {
+ private static final long serialVersionUID = 5199831572891077086L;
+ private String white;
+ private String black;
+
+ public String getWhite() {
+ return white;
+ }
+
+ public void setWhite(String white) {
+ this.white = white;
+ }
+
+ public String getBlack() {
+ return black;
+ }
+
+ public void setBlack(String black) {
+ this.black = black;
+ }
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/bean/StudentsInfo.java b/app/src/main/java/com/mjsheng/myappstore/bean/StudentsInfo.java
index 4b477ec..6b25918 100644
--- a/app/src/main/java/com/mjsheng/myappstore/bean/StudentsInfo.java
+++ b/app/src/main/java/com/mjsheng/myappstore/bean/StudentsInfo.java
@@ -8,6 +8,8 @@ public class StudentsInfo implements Serializable {
private String realname;
private String classes;
private int admin_id;
+
+
public String getBatch() {
return batch;
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/comm/CommonDatas.java b/app/src/main/java/com/mjsheng/myappstore/comm/CommonDatas.java
index 3b1b42e..6adaefd 100644
--- a/app/src/main/java/com/mjsheng/myappstore/comm/CommonDatas.java
+++ b/app/src/main/java/com/mjsheng/myappstore/comm/CommonDatas.java
@@ -1,84 +1,15 @@
package com.mjsheng.myappstore.comm;
-import com.mjsheng.myappstore.BuildConfig;
-import com.mjsheng.myappstore.network.Network;
-
public class CommonDatas {
- public static final String PACKAGE = "colorflykids";
- public static String BABYINFO_CHANGE = PACKAGE + "babyinfo_change"; // 宝宝信息变更标识
-
-
- public final static String SP_LOCK = "lock";//锁定用户
public final static String SP_BABY_AGE_KEY = "age_system";//子系统选择
- public final static String SP_LOCK__KEY = "lock_key";//主界面选择
-
- public final static String SP_USER_NAME = "user_name";//用户名字
- public final static String SP_USER_PASSWORD = "user_password";//用户密码
- public final static String SP_USER_EMAIL = "user_email";//用户信箱
- public final static String SP_VERSION = "user_version";//版本信息
public final static String SP_USER_VIP = "user_vip";//用户等级
- public final static String SP_USER_DATE = "user_vip_date";//体验用户使用时间段
- public final static String SP_USER_ALIVE_DATE = "SP_USER_ALIVE_DATE";//用户激活时的时间
- public final static String SP_USER_ALIVE_CODE = "SP_USER_ALIVE_CODE";//用户激活码
-
-
- public final static String SP_BABY_HEAD = "age_head";//宝宝头像
- public final static String SP_BABY_NAME = "age_name";//宝宝名字
- public final static String SP_BABY_SEX = "age_sex";//宝宝性别
- public final static String SP_BABY_BIRTHDAY = "age_birthday";//宝宝生日
-
- public final static String SP_BABY_TITLE = "user_title";//宝宝称谓
- public final static String SP_TOTAL_POINT = "total_point";//总积分
- public final static String SP_TODAY_POINT = "today_point";//今日积分
- public final static String SP_NATIONAL_RANK = "national_rank";//全国排名
- public final static String SP_YESTERDAY_RANK = "yesterday_rank";//历史排名
- public final static String SP_TODAY_RANK = "today_rank";//今日排名
-
-
public final static String SP_PARENT_PASSWORD = "parent_password";//家长密码
- public final static String SP_OLD_PARENT_PASSWORD = "old_parent_password";//旧的家长密码
- public final static String SP_CHANGE_PARENT_PASSWORD = "change_parent_password";//上传家长密码标识
- public final static String SP_CHANGE_BABY_INFO = "change_baby_info";//上传宝宝信息标识
- public final static String SP_CHANGE_LEARN_INFO = "change_learn_info";//上传学习日志标识
-
-
- public final static String SP_TIME_CONTROL_NOW = "time_control_now";//时间控制功能临时开关
- public final static String SP_TIME_CONTROL_KEY = "time_control";//时间控制功能开关
- public final static String SP_TIME_CURRENT_REMAINING = "current_remaining_time";//当前剩余时间
- public final static String SP_TIME_REST_REMAINING = "current_rest_time";//当前剩余休息时间
- public final static String SP_BATTEY_CONTROL_KEY = "battey_control";//充电保护开关
- public final static String SP_PASSWORD_LOCK = "password_lock";//家长密码开关
- public final static String SP_DISTANCE_CONTROL_KEY = "distance_control";//距离感应开关
-
- // 使用时间段
- public final static String SP_SELECT_START_TIME = "start_time";
- public final static String SP_SELECT_END_TIME = "end_time";
- public final static String SP_OLD_START_TIME = "old_start_time";
- public final static String SP_OLD_END_TIME = "old_end_time";
-
-
- public final static String SP_SELECT_USE_TIME = "useTimeLong";//使用时长
- public final static String SP_SELECT_REST_TIME = "restTimeLong";//休息时长
-
- //eventbus 事件
- public final static String SP_LOGIN_SUCCESS = "SP_LOGIN_SUCCESS";//账号登陆成功
-
- public final static String ENTER_KEY = "enter_key";
-// public final static String UPDATE_URL = "http://www.jiaoguanyi.com/api/update/index";
- public final static String UPDATE_URL = Network.ROOT_URL + "update/index";
- public final static String UPDATE_PKG = BuildConfig.APPLICATION_ID;
-
-
- public static boolean IS_UPDATE_DOLOADING = false;
- public static String IS_RESET = "IS_RESET";
- public static int MIN_POWER = 21;
- public static String FORCE_INSTALL = "FORCE_INSTALL";
-
- public static final String ACTION_HrReceiver_JGY_DIS = "qch_jgy_network_disallow";
- public static final String ACTION_HrReceiver_JGY = "qch_jgy_network_allow";
- public static final String FLAG_FIRST_ENTER = "qch_first_enter";
+ public final static String IS_RESET = "IS_RESET";
+ public final static int MIN_POWER = 21;
+ public final static String FORCE_INSTALL = "FORCE_INSTALL";
+ public final static String FLAG_FIRST_ENTER = "qch_first_enter";
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/download/StorageUtils.java b/app/src/main/java/com/mjsheng/myappstore/download/StorageUtils.java
deleted file mode 100644
index 0544570..0000000
--- a/app/src/main/java/com/mjsheng/myappstore/download/StorageUtils.java
+++ /dev/null
@@ -1,126 +0,0 @@
-package com.mjsheng.myappstore.download;
-
-import android.content.Context;
-import android.os.Build;
-import android.os.Environment;
-import android.os.storage.StorageManager;
-
-import com.blankj.utilcode.util.PathUtils;
-
-import java.io.File;
-import java.lang.reflect.Array;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.text.DecimalFormat;
-
-public class StorageUtils {
-
-
- // 获取存储空间 false 内置sd卡路径,true 外置sd卡路径
- public static File getStoragePath(Context mContext, boolean isSDcard) {
- StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);
- Class> storageVolumeClazz = null;
- try {
- storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");
- Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");
- Method getPath = storageVolumeClazz.getMethod("getPath");
- Method isRemovable = storageVolumeClazz.getMethod("isRemovable");
- Object result = getVolumeList.invoke(mStorageManager);
- final int length = Array.getLength(result);
- for (int i = 0; i < length; i++) {
- Object storageVolumeElement = Array.get(result, i);
- String path = (String) getPath.invoke(storageVolumeElement);
- boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);
- if (isSDcard == removable) {
- File file = new File(path);
- if (file.exists()) {
- return file;
- }else {
- if (!isSDcard) {
- return Environment.getExternalStorageDirectory();
- } else {
- File file1 = new File("root/storage/sdcard1");
- if (file1.exists()){
- return file1;
- }else {
- File file2 = new File("storage/sdcard1");
- if (file2.exists()){
- return file2;
- }else {
- File file3 = new File("/storage/emulated/0");
- if (file3.exists()){
- return file3;
- }else {
- return null;
- }
- }
- }
- }
- }
- }
- }
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (InvocationTargetException e) {
- e.printStackTrace();
- } catch (NoSuchMethodException e) {
- e.printStackTrace();
- } catch (IllegalAccessException e) {
- e.printStackTrace();
- }
- return null;
- }
-
-
-
- public static String getFileCache(Context context, String s) {
- return getExternalFilesDir(context, s).getAbsolutePath();
- }
-
- public static String getFileRoot(Context context) {
- return getExternalFilesDir(context, "Download").getAbsolutePath();
- }
-
- public static File getExternalFilesDir(Context context, String s) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
- File path = context.getExternalFilesDir(s);
- if (path != null) {
- return path;
- }
- }
- final String cacheDir = "/Android/data/" + context.getPackageName() + "/files/" + s;
- return new File(Environment.getExternalStorageDirectory().getPath() + cacheDir);
- }
-
-
- // 检测文件是否存在
- public static boolean isFileIsExists(String filePath){
- try{
- File f=new File(filePath);
- if(!f.exists()){
- return false;
- }
- }catch (Exception e) {
- return false;
- }
- return true;
- }
-
-
- public static String size(long size) {
- if (size / (1024 * 1024) > 0) {
- float tmpSize = (float) (size) / (float) (1024 * 1024 );
- DecimalFormat df = new DecimalFormat("#.##");
- return "" + df.format(tmpSize) + "GB";
- } else if (size / 1024 > 0) {
- float tmpSize = (float) (size) / (float) 1024 ;
- DecimalFormat df = new DecimalFormat("#.##");
- return "" + df.format(tmpSize) + "MB";
- } else if (size > 0) {
- return "" + (size ) + "KB";
- } else {
- return "" + (size) + "KB";
- }
- }
-
-}
diff --git a/app/src/main/java/com/mjsheng/myappstore/jpush/MyJPushMessageReceiver.java b/app/src/main/java/com/mjsheng/myappstore/jpush/MyJPushMessageReceiver.java
index aabb4a3..34974c6 100644
--- a/app/src/main/java/com/mjsheng/myappstore/jpush/MyJPushMessageReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/jpush/MyJPushMessageReceiver.java
@@ -2,7 +2,7 @@ package com.mjsheng.myappstore.jpush;
import android.content.Context;
-import com.mjsheng.myappstore.MyApplication;
+import com.mjsheng.myappstore.base.BaseApplication;
import cn.jpush.android.api.CustomMessage;
import cn.jpush.android.api.JPushMessage;
@@ -17,7 +17,7 @@ public class MyJPushMessageReceiver extends JPushMessageReceiver {
public void onTagOperatorResult(Context context, JPushMessage jPushMessage) {
TagAliasOperatorHelper.getInstance().onTagOperatorResult(context,jPushMessage);
super.onTagOperatorResult(context, jPushMessage);
- MyApplication.getInstance().onTagOperatorResult(jPushMessage);
+ BaseApplication.getInstance().onTagOperatorResult(jPushMessage);
}
@Override
public void onCheckTagOperatorResult(Context context, JPushMessage jPushMessage){
@@ -28,7 +28,7 @@ public class MyJPushMessageReceiver extends JPushMessageReceiver {
public void onAliasOperatorResult(Context context, JPushMessage jPushMessage) {
TagAliasOperatorHelper.getInstance().onAliasOperatorResult(context,jPushMessage);
super.onAliasOperatorResult(context, jPushMessage);
- MyApplication.getInstance().onAliasOperatorResult(jPushMessage);
+ BaseApplication.getInstance().onAliasOperatorResult(jPushMessage);
}
@Override
diff --git a/app/src/main/java/com/mjsheng/myappstore/manager/AmapManager.java b/app/src/main/java/com/mjsheng/myappstore/manager/AmapManager.java
new file mode 100644
index 0000000..9ccf0b2
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/manager/AmapManager.java
@@ -0,0 +1,83 @@
+package com.mjsheng.myappstore.manager;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.amap.api.location.AMapLocation;
+import com.amap.api.location.AMapLocationClient;
+import com.amap.api.location.AMapLocationClientOption;
+import com.amap.api.location.AMapLocationListener;
+import com.mjsheng.myappstore.utils.SPUtils;
+
+public class AmapManager {
+ private static AmapManager sInstance;
+ private Context mContext;
+ public static AMapLocationClient locationClient = null;
+
+ private AmapManager(Context context) {
+ this.mContext = context;
+ }
+
+ public static void init(Context context) {
+ if (sInstance == null) {
+ sInstance = new AmapManager(context);
+ }
+ }
+
+ public static AmapManager getInstance() {
+ if (sInstance == null) {
+ throw new IllegalStateException("You must be init AmapManager first");
+ }
+ return sInstance;
+ }
+
+ public AMapLocationClient getLocationClient() {
+ if (null == locationClient) {
+ initAmap();
+ }
+ return locationClient;
+ }
+
+ private void initAmap() {
+ locationClient = new AMapLocationClient(mContext);
+ AMapLocationClientOption option = new AMapLocationClientOption();
+ option.setLocationPurpose(AMapLocationClientOption.AMapLocationPurpose.SignIn);
+ option.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
+ option.setNeedAddress(true);
+ //获取一次定位结果:
+ //该方法默认为false。
+ option.setOnceLocation(true);
+ //获取最近3s内精度最高的一次定位结果:
+ //设置setOnceLocationLatest(boolean b)接口为true,启动定位时SDK会返回最近3s内精度最高的一次定位结果。
+ // 如果设置其为true,setOnceLocation(boolean b)接口也会被设置为true,反之不会,默认为false。
+ option.setOnceLocationLatest(true);
+ locationClient.setLocationOption(option);
+ //设置定位模式为AMapLocationMode.Hight_Accuracy,高精度模式。
+ //设置定位监听
+ locationClient.setLocationListener(new AMapLocationListener() {
+ @Override
+ public void onLocationChanged(AMapLocation aMapLocation) {
+ StringBuilder sb = new StringBuilder();
+ //errCode等于0代表定位成功,其他的为定位失败,具体的可以参照官网定位错误码说明
+ if (aMapLocation.getErrorCode() == 0) {
+ sb.append(aMapLocation.getAddress()).append("\n");
+ SPUtils.put(mContext, "AmapAddress", aMapLocation.getAddress());
+ SPUtils.put(mContext, "longitude", aMapLocation.getLongitude());
+ SPUtils.put(mContext, "latitude", aMapLocation.getLatitude());
+ } else {
+ //定位失败
+ sb.append("定位失败" + "\n");
+ SPUtils.put(mContext, "AmapError", aMapLocation.getErrorInfo());
+ }
+ Log.e("AmapAddress", (String) SPUtils.get(mContext, "AmapAddress", ""));
+ Log.e("AmapError", (String) SPUtils.get(mContext, "AmapError", ""));
+ Log.e("addr", sb.toString());
+ }
+ });
+ //设置场景模式后最好调用一次stop,再调用start以保证场景模式生效
+ locationClient.stopLocation();
+ locationClient.startLocation();
+ }
+
+
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/manager/FileManager.java b/app/src/main/java/com/mjsheng/myappstore/manager/FileManager.java
new file mode 100644
index 0000000..c23f8cd
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/manager/FileManager.java
@@ -0,0 +1,43 @@
+package com.mjsheng.myappstore.manager;
+
+import android.content.Context;
+import android.util.Log;
+
+import com.blankj.utilcode.util.PathUtils;
+
+import java.io.File;
+
+public class FileManager {
+ private static FileManager sInstance;
+ private Context mContext;
+
+ public FileManager(Context context) {
+ this.mContext = context;
+ }
+
+ public static void init(Context context) {
+ if (sInstance == null) {
+ sInstance = new FileManager(context);
+ initFolder();
+ }
+
+ }
+
+ public static FileManager getInstance() {
+ if (sInstance == null) {
+ throw new IllegalStateException("You must be init FileManager first");
+ }
+ return sInstance;
+ }
+
+ private static void initFolder() {
+ File file = new File(PathUtils.getExternalDownloadsPath() + File.separator + "jgy" + File.separator);
+ if (!file.exists()) {
+ if (file.mkdirs()) {
+ Log.e("initFolder", "initFolder: success");
+ } else {
+ Log.e("initFolder", "initFolder: failed");
+ }
+ }
+ }
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java b/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java
new file mode 100644
index 0000000..691bcb3
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/manager/NetInterfaceManager.java
@@ -0,0 +1,532 @@
+package com.mjsheng.myappstore.manager;
+
+import android.content.Context;
+import android.os.Environment;
+
+import com.mjsheng.myappstore.BuildConfig;
+import com.mjsheng.myappstore.bean.Appground;
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.BrowserBookmarks;
+import com.mjsheng.myappstore.bean.BrowserData;
+import com.mjsheng.myappstore.bean.ForceDownloadBean;
+import com.mjsheng.myappstore.bean.NetAndLaunchBean;
+import com.mjsheng.myappstore.bean.StudentsInfo;
+import com.mjsheng.myappstore.network.api.AppLimitApi;
+import com.mjsheng.myappstore.network.api.BrankPicApi;
+import com.mjsheng.myappstore.network.api.CategoryPicApi;
+import com.mjsheng.myappstore.network.api.DeselectBrowserIDApi;
+import com.mjsheng.myappstore.network.api.DeselectIDApi;
+import com.mjsheng.myappstore.network.api.ForceDownloadApi;
+import com.mjsheng.myappstore.network.api.NetAndLaunchApi;
+import com.mjsheng.myappstore.network.api.ProjectPicApi;
+import com.mjsheng.myappstore.network.api.RankAppApi;
+import com.mjsheng.myappstore.network.api.SystemSettingApi;
+import com.mjsheng.myappstore.network.api.UploadAppInfoApi;
+import com.mjsheng.myappstore.network.api.newapi.AppinsideWebApi;
+import com.mjsheng.myappstore.network.api.newapi.BrowserBookmarksApi;
+import com.mjsheng.myappstore.network.api.newapi.BrowserListApi;
+import com.mjsheng.myappstore.network.api.newapi.CheckTestUpdateApi;
+import com.mjsheng.myappstore.network.api.newapi.CheckUpdateApi;
+import com.mjsheng.myappstore.network.api.newapi.DesktopIconApi;
+import com.mjsheng.myappstore.network.api.newapi.DevicesLockedStateApi;
+import com.mjsheng.myappstore.network.api.newapi.GetBatchApi;
+import com.mjsheng.myappstore.network.api.newapi.GetDesktopApi;
+import com.mjsheng.myappstore.network.api.newapi.GetLockStateApi;
+import com.mjsheng.myappstore.network.api.newapi.JpushTagsApi;
+import com.mjsheng.myappstore.network.api.newapi.MACAddressApi;
+import com.mjsheng.myappstore.network.api.newapi.ScreenLockStateApi;
+import com.mjsheng.myappstore.network.api.newapi.SnTimeControl;
+import com.mjsheng.myappstore.network.api.newapi.StudentsInfosApi;
+import com.mjsheng.myappstore.network.api.newapi.TopAppControlApi;
+import com.mjsheng.myappstore.network.api.newapi.UpdateDeviceInfoApi;
+import com.mjsheng.myappstore.utils.Utils;
+
+import java.io.File;
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+import cn.jpush.android.api.JPushInterface;
+import io.reactivex.Observable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+import okhttp3.Cache;
+import okhttp3.OkHttpClient;
+import okhttp3.ResponseBody;
+import retrofit2.CallAdapter;
+import retrofit2.Converter;
+import retrofit2.Retrofit;
+import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
+import retrofit2.converter.gson.GsonConverterFactory;
+
+public class NetInterfaceManager {
+ private static NetInterfaceManager sInstance;
+ private Context mContext;
+ public static final String ROOT_URL = BuildConfig.ROOT_URL;
+ public static final String WEBSOCKET_URL = BuildConfig.WebsocketURL;
+ public static final String HTTP_KEY = "YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI=";
+
+
+ private NetInterfaceManager(Context context) {
+ this.mContext = context;
+ }
+
+ public static void init(Context context) {
+ if (sInstance == null) {
+ sInstance = new NetInterfaceManager(context);
+ }
+ }
+
+ public static NetInterfaceManager getInstance() {
+ if (sInstance == null) {
+ throw new IllegalStateException("You must be init NetworkManager first");
+ }
+ return sInstance;
+ }
+
+ private static final long cacheSize = 1024 * 1024 * 32;// 缓存文件最大限制大小20M
+ private static String cacheDirectory = Environment.getExternalStorageDirectory() + "/okttpcaches"; // 设置缓存文件路径
+ private static Cache cache = new Cache(new File(cacheDirectory), cacheSize); //
+ private static final OkHttpClient okHttpClient;
+ private static final int timeOut = 5;
+
+ static {
+ //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了
+ OkHttpClient.Builder builder = new OkHttpClient.Builder();
+ builder.connectTimeout(timeOut, TimeUnit.SECONDS); // 设置连接超时时间
+ builder.writeTimeout(timeOut, TimeUnit.SECONDS);// 设置写入超时时间
+ builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间
+ builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
+ builder.cache(cache);// 设置缓存
+ okHttpClient = builder.build();
+ }
+
+ private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create();
+ private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
+
+ /**
+ * 通过sn获取设备的信息
+ *
+ * @return
+ */
+ public Observable> getStudesInfoObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(StudentsInfosApi.class)
+ .getStudentsInfo(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ /**
+ * 获取设备锁状态
+ *
+ * @return
+ */
+ public Observable getDevicesLockedStateObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(DevicesLockedStateApi.class)
+ .getLockedState(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ /**
+ * 发送设备mac地址
+ *
+ * @return
+ */
+ public Observable sendMACAddressObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(MACAddressApi.class)
+ .sendMACaddress(Utils.getSerial(),
+ Utils.getAndroid7MAC(),
+ JPushInterface.getRegistrationID(mContext),
+ Utils.getProperty("ro.custom.build.version", "获取失败"),
+ BuildConfig.VERSION_NAME,
+ Utils.getAPPVersionName(mContext)
+ )
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ /**
+ * 获取极光推送的tag
+ *
+ * @return
+ */
+ public Observable getJpushTagsObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(JpushTagsApi.class)
+ .getJpushTags(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+
+ public Observable> getBrowserListSettingObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(BrowserListApi.class)
+ .getBrowserList(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable> getBrowserBookmarksObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(BrowserBookmarksApi.class)
+ .getBrowserBookmarks(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getDesktopIconObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(DesktopIconApi.class)
+ .getDesktopIcon(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getAppAutoStartUpdateAndNetObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(NetAndLaunchApi.class)
+ .getNetAndLaunchApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getAppIDControlObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(DeselectIDApi.class)
+ .getDeselectIDApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable>> getAppinsideWebObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(AppinsideWebApi.class)
+ .getAppinsideWeb(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getSystemSettingObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(SystemSettingApi.class)
+ .getSystemSettingApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getAppLimitObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(AppLimitApi.class)
+ .getAppLimitApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getForceDownloadObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(ForceDownloadApi.class)
+ .getForceDownloadApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+
+ public Observable getTestUpdateObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(CheckTestUpdateApi.class)
+ .getTestUpdate(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getSnTimeObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(SnTimeControl.class)
+ .getSnTimeControl(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+ public Observable getScreenLockObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(ScreenLockStateApi.class)
+ .getScreenLockState(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+ public Observable getDesktopObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(GetDesktopApi.class)
+ .getDesktop(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+ public Observable getBatchObservable() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(GetBatchApi.class)
+ .getBatch(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
+
+
+
+
+ /*
+ *
+ * API
+ *
+ * */
+ public static UploadAppInfoApi getUploadAppInfoApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(UploadAppInfoApi.class);
+ }
+
+ public static DeselectIDApi getDeselectIDApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(DeselectIDApi.class);
+ }
+
+ public static DeselectBrowserIDApi getDeselectBrowserIDApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(DeselectBrowserIDApi.class);
+ }
+
+ public static RankAppApi getRankAppApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(RankAppApi.class);
+ }
+
+ public static CategoryPicApi getCategoryPicApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(CategoryPicApi.class);
+ }
+
+ public static ProjectPicApi getProjectPicApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(ProjectPicApi.class);
+ }
+
+ public static BrankPicApi getBrankPicApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(BrankPicApi.class);
+ }
+
+ public static AppLimitApi getAppLimitApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(AppLimitApi.class);
+
+ }
+
+ public static SystemSettingApi getSystemSettingApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(SystemSettingApi.class);
+ }
+
+
+
+ public static NetAndLaunchApi getNetAndLaunchApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(NetAndLaunchApi.class);
+ }
+
+ public static ForceDownloadApi getForceDownloadApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(ForceDownloadApi.class);
+ }
+
+ public static GetLockStateApi getLockState() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(GetLockStateApi.class);
+ }
+
+ public static UpdateDeviceInfoApi getUpdateDeviceInfo() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(UpdateDeviceInfoApi.class);
+ }
+
+ public static GetBatchApi getBatchApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(GetBatchApi.class);
+ }
+
+ public static SnTimeControl getSnTimeControlApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(SnTimeControl.class);
+ }
+
+ public static TopAppControlApi getTopAppControlApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build().create(TopAppControlApi.class);
+ }
+
+
+ public CheckUpdateApi getUpdateApi() {
+ return new Retrofit.Builder()
+ .client(okHttpClient)
+ .baseUrl(ROOT_URL)
+ .addConverterFactory(gsonConverterFactory)
+ .addCallAdapterFactory(rxJavaCallAdapterFactory)
+ .build()
+ .create(CheckUpdateApi.class);
+ }
+
+}
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 b91278e..226b162 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/HTTPInterface.java
@@ -1,5 +1,6 @@
package com.mjsheng.myappstore.network;
+import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
@@ -15,19 +16,19 @@ import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
-import com.blankj.utilcode.util.LogUtils;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
-import com.mjsheng.myappstore.MyApplication;
+import com.mjsheng.myappstore.base.BaseApplication;
import com.mjsheng.myappstore.bean.Appground;
import com.mjsheng.myappstore.bean.BaseResponse;
import com.mjsheng.myappstore.bean.NetAndLaunchBean;
import com.mjsheng.myappstore.bean.NetAndLaunchData;
import com.mjsheng.myappstore.jpush.TagAliasOperatorHelper;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
import com.mjsheng.myappstore.network.api.newapi.SnTimeControl;
-import com.mjsheng.myappstore.network.api.newapi.TopAppControl;
-import com.mjsheng.myappstore.network.api.newapi.UpdateDeviceInfo;
-import com.mjsheng.myappstore.server.InitJpushServer;
+import com.mjsheng.myappstore.network.api.newapi.TopAppControlApi;
+import com.mjsheng.myappstore.network.api.newapi.UpdateDeviceInfoApi;
+import com.mjsheng.myappstore.server.MainService;
import com.mjsheng.myappstore.utils.ApkUtils;
import com.mjsheng.myappstore.utils.ForegroundAppUtil;
import com.mjsheng.myappstore.utils.Logger;
@@ -200,7 +201,7 @@ public class HTTPInterface {
// JSONObject object = JSON.parseObject(s);
// int code = object.getInteger("code");
// String msg = object.getString("msg");
-// LogUtils.e("setAppinstallInfo", msg);
+// Log.e("setAppinstallInfo", msg);
// if (code == 200) {
//
// } else {
@@ -232,7 +233,7 @@ public class HTTPInterface {
// @Override
// public void onSuccess(String s, Call call, okhttp3.Response response) {
// String body = s;
-// LogUtils.e("sendStartTime", body);
+// Log.e("sendStartTime", body);
// }
//
// @Override
@@ -341,7 +342,6 @@ public class HTTPInterface {
} else {
Log.e("installTestAPK", "APK: " + "无更新");
}
-
}
synchronized public static void setJpushTags(final Context context) {
@@ -403,7 +403,7 @@ public class HTTPInterface {
synchronized public static void setHomepagtag(final Context context) {
//7.0setPackage不加没有问题,.setPackage("com.android.settings"),10.0需要加上,待底层修改后
OkGo.post(URLAddress.SET_HOMEPAG_TAG)
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.params("sn", Utils.getSerial())
.execute(new StringCallback() {
@Override
@@ -442,7 +442,6 @@ public class HTTPInterface {
websiteBookMark.putExtra("websiteBookMark", "Invalid");
}
context.sendBroadcast(websiteBookMark);
-
} else {
Intent intent1 = new Intent("qch_app_brower_homepage");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
@@ -475,7 +474,7 @@ public class HTTPInterface {
synchronized public static void setAppinsideWeb(final Context context) {
OkGo.post(URLAddress.SET_APPINSIDEWEB)
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.params("sn", Utils.getSerial())
.execute(new StringCallback() {
@Override
@@ -560,7 +559,7 @@ public class HTTPInterface {
//设置浏览器黑白名单
synchronized public static void setBrowserList(final Context context) {
OkGo.post(URLAddress.SET_BROWSER_LIST)
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.params("sn", Utils.getSerial())
.execute(new StringCallback() {
@Override
@@ -602,7 +601,7 @@ public class HTTPInterface {
public static void setHideDesktopIcon(final Context context) {
OkGo.post(URLAddress.GET_HIDE_DESKTOPICON)
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.params("sn", Utils.getSerial())
.execute(new StringCallback() {
@Override
@@ -655,13 +654,12 @@ public class HTTPInterface {
synchronized public static void getNetAndLaunchSetting(final Context context) {
OkGo.post(URLAddress.NET_AND_LAUNCH_API)
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.params("sn", Utils.getSerial())
.execute(new StringCallback() {
@Override
public void onSuccess(String s, Call call, Response response) {
NetAndLaunchBean netAndLaunchBeanList = JSON.parseObject(s, NetAndLaunchBean.class);
- LogUtils.e(s);
switch (netAndLaunchBeanList.getCode()) {
case 200:
setNetAndlaunch(netAndLaunchBeanList, context);
@@ -678,7 +676,7 @@ public class HTTPInterface {
}
private static void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean, Context context) {
- LogUtils.e("联网和自启管控:" + netAndLaunchBean.toString());
+ Log.e("setNetAndlaunch", netAndLaunchBean.toString());
String net_ok = "";
String net_not = "";
String launch = "";
@@ -754,15 +752,15 @@ public class HTTPInterface {
if (!TextUtils.isEmpty(slide_not)) {
slide_not = slide_not.substring(0, slide_not.length() - 1);
boolean writeSucceed = Settings.System.putString(context.getContentResolver(), "qch_disable_slide", slide_not);
- Log.e("fht", "qch_disable_slide=" + writeSucceed + ":" + slide_not);
+ Log.e("setNetAndlaunch", "qch_disable_slide=" + writeSucceed + ":" + slide_not);
} else {
boolean writeSucceed = Settings.System.putString(context.getContentResolver(), "qch_disable_slide", "Invalid");
- Log.e("fht", "qch_disable_slide ok=" + writeSucceed + ":" + slide_ok);
+ Log.e("setNetAndlaunch", "qch_disable_slide ok=" + writeSucceed + ":" + slide_ok);
}
Utils.writeDisableUpdateList(context, upgrade_not.split(","), upgrade_ok.split(","));
- LogUtils.e("launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not);
+ Log.e("setNetAndlaunch", "launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not);
boolean qch_app_power_on = Settings.System.putString(context.getContentResolver(), "qch_app_power_on", launch);
// Intent netControlIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY_DIS);
@@ -778,7 +776,7 @@ public class HTTPInterface {
Log.e("fht", "ban::" + net_not);
}
- MyApplication.getInstance().setFinished(true);
+ BaseApplication.getInstance().setFinished(true);
if (!net_ok.equals("")) {
String[] nots = net_ok.split(",");
Settings.System.putString(context.getContentResolver(), "qch_jgy_network_allow", net_ok);
@@ -794,6 +792,7 @@ public class HTTPInterface {
// context.sendBroadcast(intent1);
}
+ @SuppressLint("NewApi")
public static void updateDeviceInfo(Context context) {
String address = String.valueOf(SPUtils.get(context, "AmapAddress", "-"));
String longitude = String.valueOf(SPUtils.get(context, "longitude", "0"));
@@ -802,10 +801,10 @@ public class HTTPInterface {
jsonObject.put("address", address);
jsonObject.put("longitude", longitude);
jsonObject.put("latitude", latitude);
- UpdateDeviceInfo updateDeviceInfo = Network.getUpdateDeviceInfo();
+ UpdateDeviceInfoApi updateDeviceInfo = NetInterfaceManager.getUpdateDeviceInfo();
updateDeviceInfo.updateDeviceInfo(
Utils.getSerial(),
- URLAddress.HTTP_KEY,
+ NetInterfaceManager.HTTP_KEY,
Utils.getMachine(context),
Utils.getHardware(context),
jsonObject.toJSONString()
@@ -841,7 +840,7 @@ public class HTTPInterface {
}
public static void getSnTimeControl(final Context context) {
- SnTimeControl snTimeControl = Network.getSnTimeControlApi();
+ SnTimeControl snTimeControl = NetInterfaceManager.getSnTimeControlApi();
snTimeControl.getSnTimeControl(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@@ -879,14 +878,14 @@ public class HTTPInterface {
@Override
public void onComplete() {
Intent intent = new Intent();
- intent.setAction(InitJpushServer.TimeChangedReceiver.ACTION_UPDATE);
+ intent.setAction(MainService.TimeChangedReceiver.ACTION_UPDATE);
context.sendBroadcast(intent);
}
});
}
public static void getTopAppControl(final Context context) {
- TopAppControl topAppControl = Network.getTopAppControlApi();
+ TopAppControlApi topAppControl = NetInterfaceManager.getTopAppControlApi();
topAppControl.getSnAppControl(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/Network.java b/app/src/main/java/com/mjsheng/myappstore/network/Network.java
deleted file mode 100644
index 328323a..0000000
--- a/app/src/main/java/com/mjsheng/myappstore/network/Network.java
+++ /dev/null
@@ -1,330 +0,0 @@
-package com.mjsheng.myappstore.network;
-
-import android.os.Build;
-import android.os.Environment;
-import android.util.Log;
-
-
-import com.mjsheng.myappstore.BuildConfig;
-import com.mjsheng.myappstore.network.api.AppLimitApi;
-import com.mjsheng.myappstore.network.api.BrankPicApi;
-import com.mjsheng.myappstore.network.api.CategoryPicApi;
-import com.mjsheng.myappstore.network.api.DeselectBrowserIDApi;
-import com.mjsheng.myappstore.network.api.DeselectIDApi;
-import com.mjsheng.myappstore.network.api.ForceDownloadApi;
-import com.mjsheng.myappstore.network.api.NetAndLaunchApi;
-import com.mjsheng.myappstore.network.api.ProjectPicApi;
-import com.mjsheng.myappstore.network.api.RankAppApi;
-import com.mjsheng.myappstore.network.api.SystemSettingApi;
-import com.mjsheng.myappstore.network.api.UpdateApi;
-import com.mjsheng.myappstore.network.api.UploadAppInfoApi;
-import com.mjsheng.myappstore.network.api.newapi.GetBatchApi;
-import com.mjsheng.myappstore.network.api.newapi.GetLockState;
-import com.mjsheng.myappstore.network.api.newapi.SnTimeControl;
-import com.mjsheng.myappstore.network.api.newapi.TopAppControl;
-import com.mjsheng.myappstore.network.api.newapi.UpdateDeviceInfo;
-
-import java.io.File;
-import java.util.concurrent.TimeUnit;
-
-import okhttp3.Cache;
-import okhttp3.OkHttpClient;
-import retrofit2.CallAdapter;
-import retrofit2.Converter;
-import retrofit2.Retrofit;
-import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
-import retrofit2.converter.gson.GsonConverterFactory;
-
-/**
- * 作者 mjsheng
- * 日期 2018/5/7 04:10
- * 邮箱 501802639@qq.com
- * 来自:
- */
-
-public class Network {
-
- // public static final String ROOT_URL = "http://www.as.xueshibao.com.cn/api/"; 弃用
-// public static final String ROOT_URL = "https://www.jiaoguanyi.com/api/";//正式 弃用
-
- // public static final String ROOT_URL = "https://partner.jiaoguanyi.com/api/";//正式
-// public static final String WebsocketURL = "ws://47.107.133.19:1234";
-// public static final String ROOT_URL = "http://www.jiaoguanyi.cn/api/";//测试
-// public static final String WebsocketURL = "ws://47.107.133.19:2345";
- public static final String ROOT_URL = BuildConfig.ROOT_URL;
- public static final String WebsocketURL = BuildConfig.WebsocketURL;
-
- private static UploadAppInfoApi uploadAppInfoApi;
- private static DeselectIDApi deselectIDApi;
- private static DeselectBrowserIDApi deselectBrowserIDApi;
- private static RankAppApi rankAppApi;
- private static CategoryPicApi categoryPicApi;
- private static ProjectPicApi projectPicApi;
- private static BrankPicApi brankPicApi;
- private static AppLimitApi appLimitApi;
- private static SystemSettingApi systemSettingApi;
- private static UpdateApi updateApi;
- private static NetAndLaunchApi netAndLaunchApi;
- private static ForceDownloadApi forceDownloadApi;
-
- private static GetLockState getLockState;
- private static UpdateDeviceInfo updateDeviceInfo;
- private static GetBatchApi getBatchApi;
- private static SnTimeControl SnTimeControlApi;
- private static TopAppControl TopAppControlApi;
-
- private static final long cacheSize = 1024 * 1024 * 20;// 缓存文件最大限制大小20M
- private static String cacheDirectory = Environment.getExternalStorageDirectory() + "/okttpcaches"; // 设置缓存文件路径
- private static Cache cache = new Cache(new File(cacheDirectory), cacheSize); //
- private static final OkHttpClient cacheClient;
-
- static {
- //如果无法生存缓存文件目录,检测权限使用已经加上,检测手机是否把文件读写权限禁止了
- OkHttpClient.Builder builder = new OkHttpClient.Builder();
- builder.connectTimeout(8, TimeUnit.SECONDS); // 设置连接超时时间
- builder.writeTimeout(8, TimeUnit.SECONDS);// 设置写入超时时间
- builder.readTimeout(8, TimeUnit.SECONDS);// 设置读取数据超时时间
- builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
- // builder.cache(cache);// 设置缓存
- cacheClient = builder.build();
- }
-
- private static OkHttpClient okHttpClient = new OkHttpClient();
- // private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
- private static CallAdapter.Factory rxJavaCallAdapterFactory = RxJava2CallAdapterFactory.create();
- private static Converter.Factory gsonConverterFactory = GsonConverterFactory.create();
-
- public static UploadAppInfoApi getUploadAppInfoApi() {
- if (uploadAppInfoApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(okHttpClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- uploadAppInfoApi = retrofit.create(UploadAppInfoApi.class);
- }
- Log.e("mjsheng", "UploadAppInfoApi");
- return uploadAppInfoApi;
- }
-
- public static DeselectIDApi getDeselectIDApi() {
- if (deselectIDApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(okHttpClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- deselectIDApi = retrofit.create(DeselectIDApi.class);
- }
- Log.e("mjsheng", "DeselectIDApi");
- return deselectIDApi;
- }
-
- public static DeselectBrowserIDApi getDeselectBrowserIDApi() {
- if (deselectBrowserIDApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(okHttpClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- deselectBrowserIDApi = retrofit.create(DeselectBrowserIDApi.class);
- }
- Log.e("mjsheng", "DeselectIDApi");
- return deselectBrowserIDApi;
- }
-
- public static RankAppApi getRankAppApi() {
- if (rankAppApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- rankAppApi = retrofit.create(RankAppApi.class);
- }
- Log.e("mjsheng", "RankAppApi");
- return rankAppApi;
- }
-
- public static CategoryPicApi getCategoryPicApi() {
- if (categoryPicApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- categoryPicApi = retrofit.create(CategoryPicApi.class);
- }
- Log.e("mjsheng", "CategoryPicApi");
- return categoryPicApi;
- }
-
- public static ProjectPicApi getProjectPicApi() {
- if (projectPicApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- projectPicApi = retrofit.create(ProjectPicApi.class);
- }
- Log.e("mjsheng", "projectPicApi");
- return projectPicApi;
- }
-
- public static BrankPicApi getBrankPicApi() {
- if (brankPicApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- brankPicApi = retrofit.create(BrankPicApi.class);
- }
- Log.e("mjsheng", "brankPicApi");
- return brankPicApi;
- }
-
- public static AppLimitApi getAppLimitApi() {
- if (appLimitApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- appLimitApi = retrofit.create(AppLimitApi.class);
- }
- Log.e("mjsheng", "appLimitApi");
- return appLimitApi;
- }
-
- public static SystemSettingApi getSystemSettingApi() {
- if (systemSettingApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- systemSettingApi = retrofit.create(SystemSettingApi.class);
- }
- Log.e("mjsheng", "systemSettingApi");
- return systemSettingApi;
- }
-
- public static UpdateApi getUpdateApi() {
- if (updateApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- updateApi = retrofit.create(UpdateApi.class);
- }
- Log.e("mjsheng", "systemSettingApi");
- return updateApi;
- }
-
- public static NetAndLaunchApi getNetAndLaunchApi() {
- if (netAndLaunchApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- netAndLaunchApi = retrofit.create(NetAndLaunchApi.class);
- }
- Log.e("mjsheng", "netAndLaunchApi");
- return netAndLaunchApi;
- }
-
- public static ForceDownloadApi getForceDownloadApi() {
- if (forceDownloadApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- forceDownloadApi = retrofit.create(ForceDownloadApi.class);
- }
- Log.e("mjsheng", "forceDownloadApi");
- return forceDownloadApi;
- }
-
- public static GetLockState getLockState() {
- if (getLockState == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- getLockState = retrofit.create(GetLockState.class);
- }
- Log.e("mjsheng", "forceDownloadApi");
- return getLockState;
- }
-
- public static UpdateDeviceInfo getUpdateDeviceInfo() {
- if (updateDeviceInfo == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- updateDeviceInfo = retrofit.create(UpdateDeviceInfo.class);
- }
- return updateDeviceInfo;
- }
-
- public static GetBatchApi getBatchApi() {
- if (getBatchApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- getBatchApi = retrofit.create(GetBatchApi.class);
- }
- return getBatchApi;
- }
-
- public static SnTimeControl getSnTimeControlApi() {
- if (SnTimeControlApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- SnTimeControlApi = retrofit.create(SnTimeControl.class);
- }
- return SnTimeControlApi;
- }
- public static TopAppControl getTopAppControlApi() {
- if (TopAppControlApi == null) {
- Retrofit retrofit = new Retrofit.Builder()
- .client(cacheClient)
- .baseUrl(ROOT_URL)
- .addConverterFactory(gsonConverterFactory)
- .addCallAdapterFactory(rxJavaCallAdapterFactory)
- .build();
- TopAppControlApi = retrofit.create(TopAppControl.class);
- }
- return TopAppControlApi;
- }
-
-}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java b/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java
index da78d28..04d910c 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/URLAddress.java
@@ -1,20 +1,18 @@
package com.mjsheng.myappstore.network;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
+
/**
* @author Administrator
*/
public class URLAddress {
- //http tag
- public static final String HTTP_KEY = "YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI=";
+ private static final String HTTP_TAG_HEAD_NEW = NetInterfaceManager.ROOT_URL;
- private static final String HTTP_TAG_HEAD_NEW = Network.ROOT_URL;
-
- // 下载接口 根据包名匹配 请求后更新下载次数
public static final String HTTP_TAG_DOWNLOAD_URL = HTTP_TAG_HEAD_NEW + "count/index";
-
+ // 下载接口 根据包名匹配 请求后更新下载次数
public static final String SEND_DOWNLOAD_FILE_INFO = HTTP_TAG_HEAD_NEW + "app/downloadApp";
- public static final String HTTP_TAG_FIRST = HTTP_TAG_HEAD_NEW + "lock/index";
+ public static final String GET_DEVICES_LOCKED = HTTP_TAG_HEAD_NEW + "lock/index";
public static final String SEND_DEVICES = HTTP_TAG_HEAD_NEW + "Mac/getMac";
@@ -42,7 +40,7 @@ public class URLAddress {
//通过sn获取信息
public static final String SEND_SCREENSHOT = HTTP_TAG_HEAD_NEW + "Screenshot/addImg";
//上传截图
-// public static final String UPDATE_DEVICEINFO = HTTP_TAG_HEAD_NEW + "Mac/getInfo";
+ //public static final String UPDATE_DEVICEINFO = HTTP_TAG_HEAD_NEW + "Mac/getInfo";
//上传我的设备
public final static String GET_LOCK_SCREEN_STATE = HTTP_TAG_HEAD_NEW + "Sn/getSnScreen";
//获取霸屏状态
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/AppinsideWebApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/AppinsideWebApi.java
new file mode 100644
index 0000000..485e0f0
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/AppinsideWebApi.java
@@ -0,0 +1,22 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+
+import com.mjsheng.myappstore.bean.Appground;
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import java.util.List;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface AppinsideWebApi {
+ @FormUrlEncoded
+ @POST(URLAddress.SET_APPINSIDEWEB)
+ Observable>> getAppinsideWeb(
+ @Field("key") String key,
+ @Field("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserBookmarksApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserBookmarksApi.java
new file mode 100644
index 0000000..6477ef8
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserBookmarksApi.java
@@ -0,0 +1,19 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.BrowserBookmarks;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface BrowserBookmarksApi {
+ @FormUrlEncoded
+ @POST(URLAddress.SET_HOMEPAG_TAG)
+ Observable> getBrowserBookmarks(
+ @Field("key") String key,
+ @Field("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserListApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserListApi.java
new file mode 100644
index 0000000..7422995
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/BrowserListApi.java
@@ -0,0 +1,19 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.BrowserData;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface BrowserListApi {
+ @FormUrlEncoded
+ @POST(URLAddress.SET_BROWSER_LIST)
+ Observable> getBrowserList(
+ @Field("key") String key,
+ @Field("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java
new file mode 100644
index 0000000..70e02cb
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckTestUpdateApi.java
@@ -0,0 +1,15 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface CheckTestUpdateApi {
+ @GET(URLAddress.GET_SN_APP_TEST)
+ Observable getTestUpdate(
+ @Query("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckUpdateApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckUpdateApi.java
new file mode 100644
index 0000000..9804246
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/CheckUpdateApi.java
@@ -0,0 +1,17 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface CheckUpdateApi {
+ @FormUrlEncoded
+ @POST(URLAddress.CHECK_UPDATE)
+ Observable getUpdate(
+ @Field("package") String packages
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DesktopIconApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DesktopIconApi.java
new file mode 100644
index 0000000..ee9fb24
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DesktopIconApi.java
@@ -0,0 +1,19 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.BrowserBookmarks;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface DesktopIconApi {
+ @FormUrlEncoded
+ @POST(URLAddress.GET_HIDE_DESKTOPICON)
+ Observable getDesktopIcon(
+ @Field("key") String key,
+ @Field("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DevicesLockedStateApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DevicesLockedStateApi.java
new file mode 100644
index 0000000..af09dee
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/DevicesLockedStateApi.java
@@ -0,0 +1,17 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface DevicesLockedStateApi {
+ @FormUrlEncoded
+ @POST(URLAddress.GET_DEVICES_LOCKED)
+ Observable getLockedState(
+ @Field("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetDesktopApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetDesktopApi.java
new file mode 100644
index 0000000..a44d708
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetDesktopApi.java
@@ -0,0 +1,15 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface GetDesktopApi {
+ @GET(URLAddress.GET_DESKTOP)
+ Observable getDesktop(
+ @Query("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetLockState.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetLockStateApi.java
similarity index 92%
rename from app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetLockState.java
rename to app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetLockStateApi.java
index fc502af..c88704f 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetLockState.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/GetLockStateApi.java
@@ -6,7 +6,7 @@ import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
-public interface GetLockState {
+public interface GetLockStateApi {
@FormUrlEncoded
@POST("Application/getLockState")
Observable getLockState(
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/JpushTagsApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/JpushTagsApi.java
new file mode 100644
index 0000000..6ca5a72
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/JpushTagsApi.java
@@ -0,0 +1,15 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface JpushTagsApi {
+ @GET(URLAddress.GET_DEVICES_TAGS)
+ Observable getJpushTags(
+ @Query("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/MACAddressApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/MACAddressApi.java
new file mode 100644
index 0000000..42155b2
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/MACAddressApi.java
@@ -0,0 +1,23 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.StudentsInfo;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface MACAddressApi {
+ @FormUrlEncoded
+ @POST(URLAddress.SEND_DEVICES)
+ Observable sendMACaddress(
+ @Field("sn") String sn,
+ @Field("mac") String mac,
+ @Field("jpush_id") String jpushId,
+ @Field("devices_version") String devicesVersion,
+ @Field("appstore_version") String appstoreVersion,
+ @Field("store_version") String storeVersion
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/ScreenLockStateApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/ScreenLockStateApi.java
new file mode 100644
index 0000000..11d3589
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/ScreenLockStateApi.java
@@ -0,0 +1,15 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface ScreenLockStateApi {
+ @GET(URLAddress.GET_LOCK_SCREEN_STATE)
+ Observable getScreenLockState(
+ @Query("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/StudentsInfosApi.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/StudentsInfosApi.java
new file mode 100644
index 0000000..ddd0c41
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/StudentsInfosApi.java
@@ -0,0 +1,18 @@
+package com.mjsheng.myappstore.network.api.newapi;
+
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.StudentsInfo;
+import com.mjsheng.myappstore.network.URLAddress;
+
+import io.reactivex.Observable;
+import retrofit2.http.Field;
+import retrofit2.http.FormUrlEncoded;
+import retrofit2.http.POST;
+
+public interface StudentsInfosApi {
+ @FormUrlEncoded
+ @POST(URLAddress.GET_STUDENTS_INFO)
+ Observable> getStudentsInfo(
+ @Field("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/TopAppControl.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/TopAppControlApi.java
similarity index 91%
rename from app/src/main/java/com/mjsheng/myappstore/network/api/newapi/TopAppControl.java
rename to app/src/main/java/com/mjsheng/myappstore/network/api/newapi/TopAppControlApi.java
index 9eae71c..6bca241 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/TopAppControl.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/TopAppControlApi.java
@@ -7,7 +7,7 @@ import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
-public interface TopAppControl {
+public interface TopAppControlApi {
@GET(URLAddress.GET_TOP_APP_CONTROL)
Observable getSnAppControl(
@Query("sn") String sn
diff --git a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/UpdateDeviceInfo.java b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/UpdateDeviceInfoApi.java
similarity index 93%
rename from app/src/main/java/com/mjsheng/myappstore/network/api/newapi/UpdateDeviceInfo.java
rename to app/src/main/java/com/mjsheng/myappstore/network/api/newapi/UpdateDeviceInfoApi.java
index 7126120..9543f03 100644
--- a/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/UpdateDeviceInfo.java
+++ b/app/src/main/java/com/mjsheng/myappstore/network/api/newapi/UpdateDeviceInfoApi.java
@@ -6,7 +6,7 @@ import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;
-public interface UpdateDeviceInfo {
+public interface UpdateDeviceInfoApi {
@FormUrlEncoded
@POST("Mac/getInfo")
Observable updateDeviceInfo(
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 3383e04..33598b8 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/BootReceiver.java
@@ -7,8 +7,7 @@ import android.util.Log;
import com.mjsheng.myappstore.network.HTTPInterface;
import com.mjsheng.myappstore.server.GuardService;
-import com.mjsheng.myappstore.server.InitJpushServer;
-import com.mjsheng.myappstore.server.MyDownloadService;
+import com.mjsheng.myappstore.server.MainService;
import com.mjsheng.myappstore.server.StepService;
public class BootReceiver extends BroadcastReceiver {
@@ -56,12 +55,8 @@ public class BootReceiver extends BroadcastReceiver {
}
private void startService(Context context) {
- Intent intent = new Intent(context, InitJpushServer.class);
-// intent.putExtra("boot","BOOT_COMPLETED");
- context.startService(intent);
context.startService(new Intent(context, StepService.class));
context.startService(new Intent(context, GuardService.class));
- context.startService(new Intent(context, InitJpushServer.class));
- context.startService(new Intent(context, MyDownloadService.class));
+ context.startService(new Intent(context, MainService.class));
}
}
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 8059e2a..dc49710 100644
--- a/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
+++ b/app/src/main/java/com/mjsheng/myappstore/receiver/MyJPushReceiver.java
@@ -20,18 +20,18 @@ import com.alibaba.fastjson.JSON;
import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationListener;
-import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.PathUtils;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
-import com.mjsheng.myappstore.MyApplication;
+import com.mjsheng.myappstore.base.BaseApplication;
import com.mjsheng.myappstore.comm.CommonDatas;
+import com.mjsheng.myappstore.manager.AmapManager;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
import com.mjsheng.myappstore.network.HTTPInterface;
-import com.mjsheng.myappstore.network.Network;
-import com.mjsheng.myappstore.server.InitJpushServer;
+import com.mjsheng.myappstore.network.URLAddress;
+import com.mjsheng.myappstore.server.MainService;
import com.mjsheng.myappstore.utils.ApkUtils;
import com.mjsheng.myappstore.utils.CmdUtil;
-import com.mjsheng.myappstore.network.URLAddress;
import com.mjsheng.myappstore.utils.ForegroundAppUtil;
import com.mjsheng.myappstore.utils.MySQLData;
import com.mjsheng.myappstore.utils.SPUtils;
@@ -61,8 +61,6 @@ import okhttp3.ResponseBody;
public class MyJPushReceiver extends BroadcastReceiver {
private static final String TAG = "MyJPushReceiver";
- private final String ACTION_HrReceiver_JGY = "qch_jgy_network_allow";
- private final String ACTION_HrReceiver_JGY_DIS = "qch_jgy_network_disallow";
private final String MSG_DELETE = "1";//删除应用
@@ -122,15 +120,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
private Context mContext;
private int changeNum(int paramInt) {
- switch (paramInt) {
- default:
- return 1;
- case 0:
- return 1;
- case 1:
- break;
- }
- return 0;
+ return paramInt == 0 ? 1 : 0;
}
@Override
@@ -153,7 +143,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
} else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {
Log.e(TAG, "[MyReceiver] 接收到推送下来的通知" + bundle.getString(JPushInterface.EXTRA_EXTRA));
// doDownloadAndInstall(bundle.getString(JPushInterface.EXTRA_EXTRA));
- // LogUtils.e(getBatteryLevel()+"-0-iweroiwerewefeerer-----------");
+ // Log.e(getBatteryLevel()+"-0-iweroiwerewefeerer-----------");
int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);
Log.e(TAG, "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);
} else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
@@ -176,7 +166,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);
String package_name = bundle.getString("package_name");
- LogUtils.e("mjsheng", "message::" + message + "--type::" + type + "--title::" + title + "--extras::" + extras);
+ Log.e("mjsheng", "message::" + message + "--type::" + type + "--title::" + title + "--extras::" + extras);
// ToastUtils.showShort("message::" + message + "--type::" + type + "--title::" + title + "--extras::" + extras + "---package_name:" + package_name);
// Toast.makeText(context, "message::" + message + "--type::" + type + "--title::" + title + "--extras::" + extras + "---package_name:" + package_name, Toast.LENGTH_SHORT).show();
switch (message) {
@@ -233,7 +223,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
settingCamera(extras);
break;
case MSG_ONEPACKAGES:
- if (MyApplication.getInstance().isFinished()) {
+ if (BaseApplication.getInstance().isFinished()) {
settingOneNet(extras);
}
break;
@@ -241,11 +231,11 @@ public class MyJPushReceiver extends BroadcastReceiver {
com.alibaba.fastjson.JSONObject jsonObject = JSON.parseObject(extras);
String random = jsonObject.getString("random");
String sendType = jsonObject.getString("type");
- MyApplication.sendAppUsedTime(random, sendType);
+ BaseApplication.sendAppUsedTime(random, sendType);
break;
case GET_FORCEDOWNLOADURL:
File file = new File(PathUtils.getExternalDownloadsPath() + "/jgy/");
- if (!file.exists()){
+ if (!file.exists()) {
file.mkdirs();
}
if (TextUtils.isEmpty(extras)) {
@@ -299,7 +289,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
Utils.rebootDevices(mContext);
break;
case GET_DEVICES_INFO:
- AMapLocationClient aMapLocationClient = MyApplication.getLocationClient();
+ AMapLocationClient aMapLocationClient = AmapManager.getInstance().getLocationClient();
aMapLocationClient.stopLocation();
aMapLocationClient.startLocation();
aMapLocationClient.setLocationListener(new AMapLocationListener() {
@@ -354,14 +344,14 @@ public class MyJPushReceiver extends BroadcastReceiver {
private void setLock_screen(int state, Context context, String name) {
if (ServiceAliveUtils.isServiceAlice(context)) {
- context.startService(new Intent(context, InitJpushServer.class));
+ context.startService(new Intent(context, MainService.class));
}
Intent intent = new Intent();
intent.putExtra("name", name);
if (state == 1) {
- intent.setAction(InitJpushServer.LockScreenReceiver.action_lock);
+ intent.setAction(MainService.LockScreenReceiver.action_lock);
} else if (state == 0) {
- intent.setAction(InitJpushServer.LockScreenReceiver.action_unlock);
+ intent.setAction(MainService.LockScreenReceiver.action_unlock);
}
context.sendBroadcast(intent);
}
@@ -631,7 +621,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
private void doDownloadAndInstall(String s) {
File file = new File(PathUtils.getExternalDownloadsPath() + "/jgy/");
- if (!file.exists()){
+ if (!file.exists()) {
file.mkdirs();
}
if (TextUtils.isEmpty(s)) {
@@ -693,42 +683,46 @@ public class MyJPushReceiver extends BroadcastReceiver {
}
private void getAppLimitApi() {
- Network.getAppLimitApi().getAppLimitApi(URLAddress.HTTP_KEY, Utils.getSerial()).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Observer() {
- @Override
- public void onComplete() {
- }
-
- @Override
- public void onError(Throwable param1Throwable) {
- Log.e("mjsheng", "getAppLimitApi=onError:");
- }
-
- @Override
- public void onNext(ResponseBody param1ResponseBody) {
- try {
- String str1;
- String str2 = param1ResponseBody.string();
- Log.e("mjsheng", str2);
- JSONObject jSONObject = new JSONObject(str2);
- switch (Integer.valueOf(jSONObject.optInt("code")).intValue()) {
- case 200:
- str1 = jSONObject.getJSONObject("data").optString("result");
- writeAppPackageList(str1);
- return;
+ NetInterfaceManager.getAppLimitApi()
+ .getAppLimitApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(new Observer() {
+ @Override
+ public void onComplete() {
}
- Log.e("mjsheng", "getAppLimitApi---code is -200");
- return;
- } catch (Exception e) {
- Log.e("mjsheng", "getAppLimitApi---woring----" + e.getMessage());
- e.printStackTrace();
- return;
- }
- }
- @Override
- public void onSubscribe(Disposable param1Disposable) {
- }
- });
+ @Override
+ public void onError(Throwable param1Throwable) {
+ Log.e("mjsheng", "getAppLimitApi=onError:");
+ }
+
+ @Override
+ public void onNext(ResponseBody param1ResponseBody) {
+ try {
+ String str1;
+ String str2 = param1ResponseBody.string();
+ Log.e("mjsheng", str2);
+ JSONObject jSONObject = new JSONObject(str2);
+ switch (Integer.valueOf(jSONObject.optInt("code")).intValue()) {
+ case 200:
+ str1 = jSONObject.getJSONObject("data").optString("result");
+ writeAppPackageList(str1);
+ return;
+ }
+ Log.e("mjsheng", "getAppLimitApi---code is -200");
+ return;
+ } catch (Exception e) {
+ Log.e("mjsheng", "getAppLimitApi---woring----" + e.getMessage());
+ e.printStackTrace();
+ return;
+ }
+ }
+
+ @Override
+ public void onSubscribe(Disposable param1Disposable) {
+ }
+ });
}
// private void getForceDownload() {
@@ -758,7 +752,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
// Log.e("fht", "qch_force_app:" + qch_force_app);
// break;
// default:
-// LogUtils.e("getForceDownload is error:" + forceDownloadBean.getMsg());
+// Log.e("getForceDownload is error:" + forceDownloadBean.getMsg());
// }
// }
//
@@ -885,7 +879,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
private void getDeselectID() {
- Network.getDeselectIDApi()
+ NetInterfaceManager.getDeselectIDApi()
.getDeselectIDApi("YTM3YTAxNTJmMmZmNzkyM2E2YzIwZjlhZTc0NzNmMGI=",
Utils.getSerial())
.subscribeOn(Schedulers.io())
@@ -1102,7 +1096,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
JSONObject jSONObject = new JSONObject(s);
jSONObject.optString("ban");
String str = jSONObject.optString("not");
- LogUtils.e("mjsheng", "settingPowerOn������" + str);
+ Log.e("mjsheng", "settingPowerOn������" + str);
Settings.System.putString(this.mContext.getContentResolver(), "qch_app_power_on", str);
Log.e("SystemSetting", "qch_app_power_on---------" + str);
return;
@@ -1118,7 +1112,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
String jgy1 = "com.uiuios.jgy1";
String jgy2 = "com.uiuios.jgy2";
if (!TextUtils.isEmpty(result)) {
- LogUtils.e(result);
+ Log.e("writeAppPackageList", result);
if (!result.contains(appstore)) {
result = result + "," + appstore;
}
@@ -1197,7 +1191,7 @@ public class MyJPushReceiver extends BroadcastReceiver {
if (!TextUtils.isEmpty(s1) && !TextUtils.isEmpty(result)) {
String appstore = "com.jiaoguanyi.appstore";
String store = "com.jiaoguanyi.store";
- LogUtils.e(result);
+ Log.e("writeDeselectIDtoSystem", result);
if (!result.contains(appstore)) {
result = result + "," + appstore;
}
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 d798a5b..0b5ca14 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/GuardService.java
@@ -20,23 +20,24 @@ import android.net.NetworkInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.IBinder;
-import androidx.annotation.Nullable;
import android.text.format.Formatter;
import android.util.Log;
+import androidx.annotation.Nullable;
+
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.arialyy.annotations.Download;
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.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.mjsheng.myappstore.KeepAliveConnection;
-import com.mjsheng.myappstore.MyApplication;
-import com.mjsheng.myappstore.utils.ApkUtils;
+import com.mjsheng.myappstore.base.BaseApplication;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
import com.mjsheng.myappstore.network.URLAddress;
+import com.mjsheng.myappstore.utils.ApkUtils;
import com.mjsheng.myappstore.utils.SPUtils;
import com.mjsheng.myappstore.utils.ServiceAliveUtils;
import com.mjsheng.myappstore.utils.ToastUtil;
@@ -63,10 +64,10 @@ public class GuardService extends Service {
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
- LogUtils.e(TAG, "GuardService:建立链接");
+ Log.e(TAG, "GuardService:建立链接");
boolean isServiceRunning = ServiceAliveUtils.isServiceAlice(GuardService.this);
if (!isServiceRunning) {
- Intent i = new Intent(GuardService.this, MyDownloadService.class);
+ Intent i = new Intent(GuardService.this, GuardService.class);
startService(i);
}
}
@@ -212,13 +213,13 @@ public class GuardService extends Service {
//获取移动数据连接的信息
NetworkInfo dataNetworkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
if (wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
- Log.e("fht", "WIFI已连接,移动数据已连接");
+ Log.e("NetworkChangedRecceiver", "WIFI已连接,移动数据已连接");
} else if (wifiNetworkInfo.isConnected() && !dataNetworkInfo.isConnected()) {
- Log.e("fht", "WIFI已连接,移动数据已断开");
+ Log.e("NetworkChangedRecceiver", "WIFI已连接,移动数据已断开");
} else if (!wifiNetworkInfo.isConnected() && dataNetworkInfo.isConnected()) {
- Log.e("fht", "WIFI已连接,移动数据已连接");
+ Log.e("NetworkChangedRecceiver", "WIFI已连接,移动数据已连接");
} else {
- Log.e("fht", "WIFI已连接,移动数据已断开");
+ Log.e("NetworkChangedRecceiver", "WIFI已连接,移动数据已断开");
}
//API大于23时使用下面的方式进行网络监听
} else {
@@ -236,30 +237,30 @@ public class GuardService extends Service {
sb.append(networkInfo.getTypeName() + " connect is " + networkInfo.isConnected());
}
}
- Log.e("fht", sb.toString());
+ Log.e("NetworkChangedRecceiver", sb.toString());
}
if (intent.getAction().equals(WifiManager.RSSI_CHANGED_ACTION)) {
- Log.e("fht", "wifi信号强度变化");
+ Log.e("NetworkChangedRecceiver", "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断开");
+ Log.e("NetworkChangedRecceiver", "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());
+ Log.e("NetworkChangedRecceiver", "连接到网络 " + wifiInfo.getSSID());
time2 = System.currentTimeMillis();
if ((time2 - time1) > 60 * 1000) {
//可能会多次触发,1分钟之内不执行
//application中启动服务,startcommand执行会两次
- startService(new Intent(context, InitJpushServer.class));
+ startService(new Intent(context, MainService.class));
Aria.download(this).resumeAllTask();
time1 = time2;
- Log.e("fht", "onReceive");
+ Log.e("NetworkChangedRecceiver", "onReceive");
}
}
}
@@ -267,9 +268,9 @@ public class GuardService extends Service {
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");
+ Log.e("NetworkChangedRecceiver", "系统关闭wifi");
} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
- Log.e("fht", "系统开启wifi");
+ Log.e("NetworkChangedRecceiver", "系统开启wifi");
}
}
}
@@ -297,7 +298,7 @@ public class GuardService extends Service {
String app_package = jsonObject.getString("app_package");
ToastUtil.show(app_name + "\t:下载完成");
OkGo.post(URLAddress.HTTP_TAG_DOWNLOAD_URL)
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.params("sn", Utils.getSerial())
.params("package", app_package)
.tag(this)
@@ -316,7 +317,7 @@ public class GuardService extends Service {
int userId = (int) SPUtils.get(GuardService.this, "admin_id", 0);
long app_size = task.getFileSize();
OkGo.post(URLAddress.SEND_DOWNLOAD_FILE_INFO)
- .params("key", URLAddress.HTTP_KEY)
+ .params("key", NetInterfaceManager.HTTP_KEY)
.params("sn", Utils.getSerial())
.params("userId", userId)
.params("package_name", packageName)
@@ -342,8 +343,8 @@ public class GuardService extends Service {
// }
List list = Aria.download(this).getDRunningTask();
if (list == null || list.size() == 0) {
- MyApplication.getInstance().setDownloadState(false);
- Log.e("aria", "isDownloading=" + MyApplication.getInstance().isDownloading());
+ BaseApplication.getInstance().setDownloadState(false);
+ Log.e("aria", "isDownloading=" + BaseApplication.getInstance().isDownloading());
}
}
@@ -358,7 +359,7 @@ public class GuardService extends Service {
Log.e("aria", "下载失败:" + filepath);
// ToastUtil.show(app_name + "\t:下载失败");
} catch (Exception e) {
- Log.e("fht", "taskFail");
+ Log.e("aria", "taskFail");
}
}
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 af6ed51..9206395 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/InitJpushServer.java
@@ -1,5 +1,6 @@
package com.mjsheng.myappstore.server;
+import android.annotation.SuppressLint;
import android.app.Service;
import android.bluetooth.BluetoothAdapter;
import android.content.BroadcastReceiver;
@@ -28,12 +29,11 @@ import android.widget.TextView;
import com.alibaba.fastjson.JSON;
import com.arialyy.aria.core.Aria;
-import com.blankj.utilcode.util.LogUtils;
import com.blankj.utilcode.util.PathUtils;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.mjsheng.myappstore.BuildConfig;
-import com.mjsheng.myappstore.MyApplication;
+import com.mjsheng.myappstore.base.BaseApplication;
import com.mjsheng.myappstore.R;
import com.mjsheng.myappstore.bean.Batch;
import com.mjsheng.myappstore.bean.ForceDownloadBean;
@@ -44,8 +44,8 @@ import com.mjsheng.myappstore.bean.NetAndLaunchData;
import com.mjsheng.myappstore.bean.StudentsInfo;
import com.mjsheng.myappstore.comm.CommonDatas;
import com.mjsheng.myappstore.jpush.TagAliasOperatorHelper;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
import com.mjsheng.myappstore.network.HTTPInterface;
-import com.mjsheng.myappstore.network.Network;
import com.mjsheng.myappstore.network.api.AppLimitApi;
import com.mjsheng.myappstore.network.api.DeselectBrowserIDApi;
import com.mjsheng.myappstore.network.api.DeselectIDApi;
@@ -110,7 +110,7 @@ public class InitJpushServer extends Service {
registReceiver();
registerTimeReceiver();
File file = new File(PathUtils.getExternalDownloadsPath() + "/jgy/");
- if (!file.exists()){
+ if (!file.exists()) {
file.mkdirs();
}
// android.os.Debug.waitForDebugger();
@@ -128,9 +128,9 @@ public class InitJpushServer extends Service {
getScreenLockState();
getAppLimitApi();//获取可以写入的app包名
HTTPInterface.getNetAndLaunchSetting(this);
- int first = (int) SPUtils.get(InitJpushServer.this, "first_connect", 0);
+ int first = (int) SPUtils.get(this, "first_connect", 0);
if (first == 0) {
- SysSettingUtils.setDisableSetting(InitJpushServer.this);//设置系统管控
+ SysSettingUtils.setDisableSetting(this);//设置系统管控
}
timerImitate();
// getNetworkState();
@@ -140,7 +140,7 @@ public class InitJpushServer extends Service {
return START_STICKY;
}
- private void getInfo() {
+ private void getInfo(Context context) {
OkGo.post(URLAddress.GET_STUDENTS_INFO)
.params("sn", Utils.getSerial())
.execute(new StringCallback() {
@@ -150,10 +150,10 @@ public class InitJpushServer extends Service {
LzyResponse lzyResponse = (LzyResponse) JSON.parseObject(s, LzyResponse.class);
StudentsInfo info = lzyResponse.data;
if (lzyResponse.code == 200) {
- SPUtils.put(InitJpushServer.this, "batch", info.getBatch());
- SPUtils.put(InitJpushServer.this, "classes", info.getClasses());
- SPUtils.put(InitJpushServer.this, "sno", info.getSno());
- SPUtils.put(InitJpushServer.this, "realname", info.getRealname());
+ SPUtils.put(context, "batch", info.getBatch());
+ SPUtils.put(context, "classes", info.getClasses());
+ SPUtils.put(context, "sno", info.getSno());
+ SPUtils.put(context, "realname", info.getRealname());
}
} catch (Exception e) {
Log.e("fht", "getInfo:" + e.getMessage());
@@ -200,7 +200,7 @@ public class InitJpushServer extends Service {
screenlocked = false;
}
} catch (Exception e) {
- Log.e("getScreenLockState", "onSuccess: "+e.getMessage() );
+ Log.e("getScreenLockState", "onSuccess: " + e.getMessage());
}
}
@@ -220,11 +220,92 @@ public class InitJpushServer extends Service {
}
};
+ private int changeNum(int status) {
+ int num = 1;
+ switch (status) {
+ case 0:
+ num = 1;
+ break;
+ case 1:
+ num = 0;
+ break;
+ default:
+ num = 1;
+ }
+ return num;
+ }
+
+ private Handler mHandler = new Handler() {
+ @Override
+ public void handleMessage(Message msg) {
+ super.handleMessage(msg);
+ switch (msg.what) {
+ case 200:
+ com.alibaba.fastjson.JSONObject jsonObject = (com.alibaba.fastjson.JSONObject) msg.obj;
+ installAPK(jsonObject);
+ break;
+ case -200:
+ Log.e("fht", "no update");
+ }
+ }
+
+ };
+
+ private void installAPK(com.alibaba.fastjson.JSONObject jsonObject) {
+ String url = jsonObject.getString("url");
+ int versionCode = jsonObject.getInteger("version_code");
+ String packageName = jsonObject.getString("package");
+ String app_name = jsonObject.getString("app_name");
+ com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
+ object.put("app_name", app_name);
+ object.put("app_package", packageName);
+ PackageManager pm = getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (packageInfo == null || packageInfo.versionCode < versionCode) {
+// Aria.download(this)
+// .load(url) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
+// .setExtendField(object.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(this, url, object);
+ } else {
+ Log.e("fht", "无需更新");
+ }
+
+ }
+
+ private void showTopAcivity() {
+// if (true) {
+// Intent intent = new Intent(this, TopActivity.class);
+// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+// intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
+// startActivity(intent);
+// }
+
+ }
+
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ if (null != lockScreenReceiver) {
+ unregisterReceiver(lockScreenReceiver);
+ }
+ Log.e("fht", "InitJpushServer onDestroy");
+
+ }
+
private static WindowManager windowManager;
private View topView;
boolean screenlocked = false;
boolean timelocked = false;
+ @SuppressLint("NewApi")
private void showFloatingWindow(String name) {
if (Settings.canDrawOverlays(this)) {
// 获取WindowManager服务
@@ -316,13 +397,13 @@ public class InitJpushServer extends Service {
if (TextUtils.isEmpty(action)) {
return;
}
- if (action.equals(action_lock)) {
+ if (action_lock.equals(action)) {
String name = intent.getStringExtra("name");
if (!timelocked) {
showFloatingWindow(name);
}
screenlocked = true;
- } else if (action.equals(action_unlock)) {
+ } else if (action_unlock.equals(action)) {
if (!timelocked) {
hideFloatingWindow();
}
@@ -353,20 +434,21 @@ public class InitJpushServer extends Service {
@Override
public void onReceive(Context context, Intent intent) {
- if (Intent.ACTION_DATE_CHANGED.equals(intent.getAction())) {
+ String action = intent.getAction();
+ if (Intent.ACTION_DATE_CHANGED.equals(action)) {
Log.e("fht", "TimeChangedReceiver:" + "data changed");
- } else if (Intent.ACTION_TIME_CHANGED.equals(intent.getAction())) {
+ } else if (Intent.ACTION_TIME_CHANGED.equals(action)) {
Log.e("fht", "TimeChangedReceiver:" + "time changed");
- } else if (Intent.ACTION_TIMEZONE_CHANGED.equals(intent.getAction())) {
+ } else if (Intent.ACTION_TIMEZONE_CHANGED.equals(action)) {
Log.e("fht", "TimeChangedReceiver:" + "timezone changed");
- } else if (Intent.ACTION_TIME_TICK.equals(intent.getAction())) {
+ } else if (Intent.ACTION_TIME_TICK.equals(action)) {
Log.e("fht", "TimeChangedReceiver:" + "time tick");
- } else if (ACTION_UPDATE.equals(intent.getAction())) {
+ } else if (ACTION_UPDATE.equals(action)) {
Log.e("fht", "TimeChangedReceiver:" + "date update");
}
ForegroundAppUtil.openTopApp(context);
long nowTime = System.currentTimeMillis();
- TimeUtils.ContralTime contralTime = TimeUtils.getDefaltContralTime(InitJpushServer.this);
+ TimeUtils.ContralTime contralTime = TimeUtils.getDefaltContralTime(context);
if (null != contralTime) {
if (contralTime.inControlTime(nowTime)) {
if (!screenlocked) {
@@ -400,7 +482,7 @@ public class InitJpushServer extends Service {
sequence++;
tagAliasBean.alias = Utils.getSerial();
tagAliasBean.isAliasAction = true;
- TagAliasOperatorHelper.getInstance().handleAction(InitJpushServer.this, sequence, tagAliasBean);
+ TagAliasOperatorHelper.getInstance().handleAction(this, sequence, tagAliasBean);
// JPushInterface.setAlias(this, Utils.getSerial(), new TagAliasCallback() {
// @Override
// public void gotResult(int i, String s, Set set) {
@@ -496,12 +578,12 @@ public class InitJpushServer extends Service {
}
if (app_version_code > versionCode) {
if (!SaveListUtils.isDownLoading(app_url)) {
- Utils.ariaDownload(InitJpushServer.this, app_url, jsonObject);
+ Utils.ariaDownload(this, app_url, jsonObject);
}
}
} else {
if (!SaveListUtils.isDownLoading(app_url)) {
- Utils.ariaDownload(InitJpushServer.this, app_url, jsonObject);
+ Utils.ariaDownload(this, app_url, jsonObject);
}
}
}
@@ -509,8 +591,8 @@ public class InitJpushServer extends Service {
}
private void getDeselectID() {
- DeselectIDApi deselectIDApi = Network.getDeselectIDApi();
- deselectIDApi.getDeselectIDApi(URLAddress.HTTP_KEY, Utils.getSerial())
+ DeselectIDApi deselectIDApi = NetInterfaceManager.getDeselectIDApi();
+ deselectIDApi.getDeselectIDApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -523,7 +605,7 @@ public class InitJpushServer extends Service {
public void onNext(ResponseBody responseBody) {
try {
String responString = responseBody.string();
- LogUtils.e("initmjsheng", "应用联网管控::" + responString);
+ Log.e("initmjsheng", "应用联网管控::" + responString);
JSONObject jsonObject = new JSONObject(responString);
Integer code = jsonObject.optInt("code");
switch (code) {
@@ -556,8 +638,8 @@ public class InitJpushServer extends Service {
}
private void getDeselectBrowerID() {
- DeselectBrowserIDApi deselectBrowserIDApi = Network.getDeselectBrowserIDApi();
- deselectBrowserIDApi.getDeselectBrowserIDApi(URLAddress.HTTP_KEY, Utils.getSerial())
+ DeselectBrowserIDApi deselectBrowserIDApi = NetInterfaceManager.getDeselectBrowserIDApi();
+ deselectBrowserIDApi.getDeselectBrowserIDApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -571,7 +653,7 @@ public class InitJpushServer extends Service {
public void onNext(ResponseBody responseBody) {
try {
String responString = responseBody.string();
- LogUtils.e("initmjsheng", "浏览器ID管控::" + responString);
+ Log.e("initmjsheng", "浏览器ID管控::" + responString);
JSONObject jsonObject = new JSONObject(responString);
Integer code = jsonObject.optInt("code");
switch (code) {
@@ -603,8 +685,8 @@ public class InitJpushServer extends Service {
}
private void getAppLimitApi() {
- AppLimitApi appLimitApi = Network.getAppLimitApi();
- appLimitApi.getAppLimitApi(URLAddress.HTTP_KEY, Utils.getSerial())
+ AppLimitApi appLimitApi = NetInterfaceManager.getAppLimitApi();
+ appLimitApi.getAppLimitApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -655,7 +737,7 @@ public class InitJpushServer extends Service {
String jgy1 = "com.uiuios.jgy1";
String jgy2 = "com.uiuios.jgy2";
if (!TextUtils.isEmpty(result)) {
- LogUtils.e(result);
+ Log.e("writeAppPackageList", result);
if (!result.contains(appstore)) {
result = result + "," + appstore;
}
@@ -673,15 +755,15 @@ public class InitJpushServer extends Service {
} else {
Log.e("mjsheng", "writeAppPackageList is null:");
}
- int locked = Settings.System.getInt(InitJpushServer.this.getContentResolver(), "qch_unlock_ipad", 1);
+ int locked = Settings.System.getInt(this.getContentResolver(), "qch_unlock_ipad", 1);
if (locked == 0) {
getDeviceBatch(result);
-
}
}
+
private void getDeviceBatch(final String result) {
- GetBatchApi getBatchApi = Network.getBatchApi();
+ GetBatchApi getBatchApi = NetInterfaceManager.getBatchApi();
getBatchApi.getBatch(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
@@ -735,12 +817,12 @@ public class InitJpushServer extends Service {
Log.e("deleteOtherApp", "packageList:" + packageList);
String[] result = packageList.split(",");
List resultList = new ArrayList<>(Arrays.asList(result));
- List packageLists = ApkUtils.queryFilterAppInfo(InitJpushServer.this);
+ List packageLists = ApkUtils.queryFilterAppInfo(this);
Log.e("deleteOtherApp", "packageLists:" + packageLists.toString());
if (resultList.size() > 0) {
for (final String packageName : packageLists) {
- if (Utils.isSystemApp(InitJpushServer.this, packageName)) {
+ if (Utils.isSystemApp(this, packageName)) {
Log.e("deleteOtherApp", "is systemApp:" + packageName);
continue;
}
@@ -765,8 +847,8 @@ public class InitJpushServer extends Service {
}
private void getNetAndLaunchSetting() {
- NetAndLaunchApi netAndLaunchApi = Network.getNetAndLaunchApi();
- netAndLaunchApi.getNetAndLaunchApi(URLAddress.HTTP_KEY, Utils.getSerial())
+ NetAndLaunchApi netAndLaunchApi = NetInterfaceManager.getNetAndLaunchApi();
+ netAndLaunchApi.getNetAndLaunchApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -801,8 +883,8 @@ public class InitJpushServer extends Service {
//强制下载
private void getForceDownload() {
- ForceDownloadApi forceDownloadApi = Network.getForceDownloadApi();
- forceDownloadApi.getForceDownloadApi(URLAddress.HTTP_KEY, Utils.getSerial())
+ ForceDownloadApi forceDownloadApi = NetInterfaceManager.getForceDownloadApi();
+ forceDownloadApi.getForceDownloadApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -816,9 +898,9 @@ public class InitJpushServer extends Service {
public void onNext(ForceDownloadBean forceDownloadBean) {
switch (forceDownloadBean.getCode()) {
case 200:
- Log.e("getForceDownload", "isDownloading=" + MyApplication.getInstance().isDownloading());
- MyApplication.getInstance().checkIsDownloading();
- if (!MyApplication.getInstance().isDownloading()) {
+ Log.e("getForceDownload", "isDownloading=" + BaseApplication.getInstance().isDownloading());
+ BaseApplication.getInstance().checkIsDownloading();
+ if (!BaseApplication.getInstance().isDownloading()) {
Aria.download(this).removeAllTask(true);
forceDownload(forceDownloadBean.getData());
} else {
@@ -826,11 +908,11 @@ public class InitJpushServer extends Service {
}
break;
case -200:
- boolean qch_force_app = Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_force_app", "invalid");
+ boolean qch_force_app = Settings.System.putString(getContentResolver(), "qch_force_app", "invalid");
Log.e("fht", "qch_force_app:" + qch_force_app);
break;
default:
- LogUtils.e("getForceDownload is error:" + forceDownloadBean.getMsg());
+ Log.e("getForceDownload", forceDownloadBean.getMsg());
break;
}
}
@@ -930,7 +1012,7 @@ public class InitJpushServer extends Service {
}
private void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean) {
- LogUtils.e("联网和自启管控:" + netAndLaunchBean.toString());
+ Log.e("setNetAndlaunch", netAndLaunchBean.toString());
String net_ok = "";
String net_not = "";
String launch = "";
@@ -1013,10 +1095,10 @@ 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);
+ Log.e("setNetAndlaunch", "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(InitJpushServer.this.getContentResolver(), "qch_app_power_on", launch);
+ Log.e("setNetAndlaunch", "launch:" + launch + "-----------net_ok:" + net_ok + "-----------net_not:" + net_not);
+ boolean qch_app_power_on = Settings.System.putString(this.getContentResolver(), "qch_app_power_on", launch);
// Intent netControlIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY_DIS);
// netControlIntent.putExtra("package_name", net_not);
@@ -1031,7 +1113,7 @@ public class InitJpushServer extends Service {
Log.e("fht", "ban::" + net_not);
}
- MyApplication.getInstance().setFinished(true);
+ BaseApplication.getInstance().setFinished(true);
if (!net_ok.equals("")) {
String[] nots = net_ok.split(",");
Settings.System.putString(getContentResolver(), "qch_jgy_network_allow", net_ok);
@@ -1050,7 +1132,7 @@ public class InitJpushServer extends Service {
private void writeDeselectBrowserIDtoSystem(String ids) {
// if (!TextUtils.isEmpty(ids)) {
- boolean deselectBrowserArray = Settings.System.putString(InitJpushServer.this.getContentResolver(), "DeselectBrowserArray", ids);
+ boolean deselectBrowserArray = Settings.System.putString(this.getContentResolver(), "DeselectBrowserArray", ids);
Log.e("SystemSetting", "DeselectBrowserArray---------" + deselectBrowserArray);
// } else {
// Log.e("mjsheng", "writeDeselectBrowserIDtoSystem is null:");
@@ -1062,7 +1144,7 @@ public class InitJpushServer extends Service {
if (!TextUtils.isEmpty(s1) && !TextUtils.isEmpty(result)) {
String appstore = "com.jiaoguanyi.appstore";
String store = "com.jiaoguanyi.store";
- LogUtils.e(result);
+ Log.e("writeDeselectIDtoSystem", result);
if (!result.contains(appstore)) {
result = result + "," + appstore;
}
@@ -1082,8 +1164,8 @@ public class InitJpushServer extends Service {
}
private void getSystemSetting() {
- final SystemSettingApi systemSettingApi = Network.getSystemSettingApi();
- systemSettingApi.getSystemSettingApi(URLAddress.HTTP_KEY, Utils.getSerial())
+ final SystemSettingApi systemSettingApi = NetInterfaceManager.getSystemSettingApi();
+ systemSettingApi.getSystemSettingApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@@ -1096,7 +1178,7 @@ public class InitJpushServer extends Service {
try {
// Log.e("mjsheng", "systemSettingBean::" + systemSettingBean);
String responString = responseBody.string();
- LogUtils.e("mjsheng1", "系统管控::" + responString);
+ Log.e("mjsheng1", "系统管控::" + responString);
JSONObject jsonObject = new JSONObject(responString);
Integer code = jsonObject.optInt("code");
switch (code) {
@@ -1144,7 +1226,7 @@ public class InitJpushServer extends Service {
}
synchronized public void sendMACaddress() {
- String rid = JPushInterface.getRegistrationID(InitJpushServer.this);
+ String rid = JPushInterface.getRegistrationID(this);
OkGo.post(URLAddress.SEND_DEVICES)
.params("sn", Utils.getSerial())
@@ -1174,7 +1256,7 @@ public class InitJpushServer extends Service {
boolean locked = false;
synchronized public void getLockedState() {
- OkGo.post(URLAddress.HTTP_TAG_FIRST)
+ OkGo.post(URLAddress.GET_DEVICES_LOCKED)
.params("sn", Utils.getSerial())
.execute(new StringCallback() {
@Override
@@ -1190,17 +1272,17 @@ public class InitJpushServer extends Service {
Log.e("jpttlocked", String.valueOf(lock));
if (lock == 0) {
locked = false;
- boolean se = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_unlock_ipad", 1);
+ boolean se = Settings.System.putInt(getContentResolver(), "qch_unlock_ipad", 1);
SysSettingUtils.setEnableSetting(InitJpushServer.this);
SPUtils.put(InitJpushServer.this, "first_connect", 1);
- Log.e("fht", "getLockedState---------" + Settings.System.getString(InitJpushServer.this.getContentResolver(), "qch_unlock_ipad"));
+ Log.e("fht", "getLockedState---------" + Settings.System.getString(getContentResolver(), "qch_unlock_ipad"));
Log.e("jpttlocked1", "qch_unlock_ipad---------" + locked + se);
} else {
locked = true;
- Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_unlock_ipad", 0);
+ Settings.System.putInt(getContentResolver(), "qch_unlock_ipad", 0);
Log.e("jpttlocked2", "qch_unlock_ipad---------" + locked);
-// Settings.System.putString(InitJpushServer.this.getContentResolver(), "DeselectBrowserArray", "http://www.baidu.com");
- String ss = Settings.System.getString(InitJpushServer.this.getContentResolver(), "DeselectBrowserArray");
+// Settings.System.putString(this.getContentResolver(), "DeselectBrowserArray", "http://www.baidu.com");
+ String ss = Settings.System.getString(getContentResolver(), "DeselectBrowserArray");
Log.e("jpttlocked2", "DeselectBrowserArray---------" + ss);
// 初始化 JPush
JPushInterface.init(InitJpushServer.this);
@@ -1226,7 +1308,7 @@ public class InitJpushServer extends Service {
}
} else if (code == -300) {
-// ApkUtils.uninstallAllApp(InitJpushServer.this);
+// ApkUtils.uninstallAllApp(this);
}
}
@@ -1242,7 +1324,7 @@ public class InitJpushServer extends Service {
private void resetDevice() {
boolean isReset = MySQLData.GetBooleanData(this, CommonDatas.IS_RESET);
int batteryLevel = getBatteryLevel();
- LogUtils.e(batteryLevel + "------------------" + isReset);
+ Log.e("resetDevice", "batteryLevel: " + batteryLevel + "isReset: " + isReset);
if (isReset && batteryLevel >= CommonDatas.MIN_POWER) {
Utils.doMasterClear(this);
}
@@ -1253,7 +1335,7 @@ public class InitJpushServer extends Service {
BatteryManager batteryManager = (BatteryManager) getSystemService(BATTERY_SERVICE);
return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
} else {
- Intent intent = new ContextWrapper(InitJpushServer.this).
+ Intent intent = new ContextWrapper(this).
registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) /
intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
@@ -1262,31 +1344,31 @@ public class InitJpushServer extends Service {
private void checkUpdate() {
HTTPInterface.checkUpdate(mHandler, "com.jiaoguanyi.store");
- HTTPInterface.checkTestUpdate(InitJpushServer.this);
+ HTTPInterface.checkTestUpdate(this);
}
private BluetoothAdapter mBluetoothAdapter;
private void SettingSysData(JSONObject data) {
- SPUtils.put(InitJpushServer.this, "first_connect", 1);
- SysSettingUtils.setSystemSetting(InitJpushServer.this, data.toString());
+ SPUtils.put(this, "first_connect", 1);
+ SysSettingUtils.setSystemSetting(this, data.toString());
// try {
// int setting_call = changeNum(data.optInt("setting_call"));
-// boolean qch_call_forbid = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_call_forbid", setting_call);
+// boolean qch_call_forbid = Settings.System.putInt(this.getContentResolver(), "qch_call_forbid", setting_call);
// Log.e("SystemSetting", "qch_call_forbid---------" + qch_call_forbid);
//
// int setting_phone = changeNum(data.optInt("setting_phone"));
-// boolean qch_white_list_on = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_white_list_on", setting_phone);
+// boolean qch_white_list_on = Settings.System.putInt(this.getContentResolver(), "qch_white_list_on", setting_phone);
// Log.e("SystemSetting", "qch_white_list_on---------" + qch_white_list_on);
//
// String setting_phones = data.optString("setting_phones");
-// boolean qch_white_list_Array = Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_white_list_Array", setting_phones);
+// boolean qch_white_list_Array = Settings.System.putString(this.getContentResolver(), "qch_white_list_Array", setting_phones);
// // ToastTool.show("qch_call_forbid::"+setting_call+"----setting_phones::"+setting_phones+"----"+qch_white_list_Array+"---"+qch_call_forbid);
// Log.e("SystemSetting", "qch_white_list_Array---------" + qch_white_list_Array + "---" + setting_phones);
//
// int setting_memory = changeNum(data.optInt("setting_memory"));
-// boolean qch_sdcard_forbid_on = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_sdcard_forbid_on", setting_memory);
+// boolean qch_sdcard_forbid_on = Settings.System.putInt(this.getContentResolver(), "qch_sdcard_forbid_on", setting_memory);
// Log.e("SystemSetting", "qch_sdcard_forbid_on---------" + qch_sdcard_forbid_on);
//
//
@@ -1296,7 +1378,7 @@ public class InitJpushServer extends Service {
// //Midi模式:usb_midi
// String setting_usb = data.optString("setting_usb");
// if (!BuildConfig.DEBUG) {
-// boolean qch_usb_choose = Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_usb_choose", setting_usb);
+// boolean qch_usb_choose = Settings.System.putString(this.getContentResolver(), "qch_usb_choose", setting_usb);
// Log.e("SystemSetting", "qch_usb_choose---------" + qch_usb_choose);
// String usbStatus = "";
// switch (setting_usb) {
@@ -1335,7 +1417,7 @@ public class InitJpushServer extends Service {
// int setting_bhtvideo = changeNum(data.optInt("setting_bhtvideo"));//蓝牙音频开关
// int setting_bluetooth = changeNum(data.optInt("setting_bluetooth"));//蓝牙传输开关
//
-// boolean qch_bht_forbid_on = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_bht_forbid_on", setting_bht);//写入系统数据库
+// boolean qch_bht_forbid_on = Settings.System.putInt(this.getContentResolver(), "qch_bht_forbid_on", setting_bht);//写入系统数据库
// Log.e("SystemSetting", "qch_bht_forbid_on:" + qch_bht_forbid_on);
// if (qch_bht_forbid_on) {//成功
// if (null == mBluetoothAdapter) {
@@ -1346,14 +1428,14 @@ public class InitJpushServer extends Service {
// if (setting_bhtvideo == 0) {
// if (null != setting_context && !setting_context.equals("") && !setting_context.equals(" ") && !setting_context.equals("null")) {
// Log.e("SystemSetting", "setting_context:" + setting_context);
-// Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_bhtvideo_forbid_on", setting_context);
+// Settings.System.putString(this.getContentResolver(), "qch_bhtvideo_forbid_on", setting_context);
// } else {
-// Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
+// Settings.System.putString(this.getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
// }
// } else if (setting_bhtvideo == 1) {
-// Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
+// Settings.System.putString(this.getContentResolver(), "qch_bhtvideo_forbid_on", "Empty");
// }
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_bt_forbid_on", setting_bluetooth);
+// Settings.System.putInt(this.getContentResolver(), "qch_bt_forbid_on", setting_bluetooth);
// } else {
// mBluetoothAdapter.disable();//设置关闭时关闭蓝牙
// }
@@ -1373,7 +1455,7 @@ public class InitJpushServer extends Service {
//
// //系统导航条显示开关
// int setting_navigation = changeNum(data.optInt("setting_navigation"));
-// boolean qch_hide_navigationBar = Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_hide_NavigationBar", setting_navigation);
+// boolean qch_hide_navigationBar = Settings.System.putInt(this.getContentResolver(), "qch_hide_NavigationBar", setting_navigation);
// Log.e("SystemSetting", "qch_hide_navigationBar---------" + qch_hide_navigationBar);
//
// String navigationStatus = "";
@@ -1412,8 +1494,8 @@ public class InitJpushServer extends Service {
//
// //摄像头开关
// int setting_camera = changeNum(data.optInt("setting_camera"));
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_camera", setting_camera);
-//// ApkUtils.hideSystemSettingAPP(InitJpushServer.this, "com.mediatek.camera");
+// Settings.System.putInt(this.getContentResolver(), "qch_app_camera", setting_camera);
+//// ApkUtils.hideSystemSettingAPP(this, "com.mediatek.camera");
// Log.e("SystemSetting", "setting_camera---------" + setting_camera);
// String cameraStatus = "";
// switch (setting_camera) {
@@ -1430,7 +1512,7 @@ public class InitJpushServer extends Service {
//
// //tfmedia开关
// int setting_tfmedia = changeNum(data.optInt("setting_tfmedia"));
-// boolean qch_tfmedia_forbid = Settings.System.putInt(InitJpushServer.this.getContentResolver(),
+// boolean qch_tfmedia_forbid = Settings.System.putInt(this.getContentResolver(),
// "qch_tfmedia_forbid", setting_tfmedia);
// Log.e("SystemSetting", "setting_tfmedia---------" + qch_tfmedia_forbid);
// String tfmediaStatus = "";
@@ -1457,7 +1539,7 @@ public class InitJpushServer extends Service {
// i++;
// }
// stringBuffer.deleteCharAt(stringBuffer.length() - 1);
-// Settings.System.putString(InitJpushServer.this.getContentResolver(), "qch_tfmedia_filetypes", stringBuffer.toString());//影音管控
+// Settings.System.putString(this.getContentResolver(), "qch_tfmedia_filetypes", stringBuffer.toString());//影音管控
// Log.e("SystemSetting", "qch_tfmedia_filetypes---------" + stringBuffer.toString());
//
// } catch (JSONException e) {
@@ -1465,41 +1547,41 @@ public class InitJpushServer extends Service {
//
// }
// } else {
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_tfmedia_forbid", 0);
+// Settings.System.putInt(this.getContentResolver(), "qch_tfmedia_forbid", 0);
// }
// //added:2019.12.6
// //设置5个app的开关
// //时钟
// int deskclock = changeNum(data.optInt("setting_clock"));
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_deskclock", deskclock);
-// ApkUtils.hideSystemSettingAPP(InitJpushServer.this, "com.android.deskclock");
+// Settings.System.putInt(this.getContentResolver(), "qch_app_deskclock", deskclock);
+// ApkUtils.hideSystemSettingAPP(this, "com.android.deskclock");
// Log.e("SystemSetting", "qch_app_deskclock" + deskclock);
// //录音机
// int soundrecorder = changeNum(data.optInt("setting_recording"));
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_soundrecorder", soundrecorder);
-// ApkUtils.hideSystemSettingAPP(InitJpushServer.this, "com.android.soundrecorder");
+// Settings.System.putInt(this.getContentResolver(), "qch_app_soundrecorder", soundrecorder);
+// ApkUtils.hideSystemSettingAPP(this, "com.android.soundrecorder");
// Log.e("SystemSetting", "qch_app_soundrecorder" + soundrecorder);
// //音乐
// int music = changeNum(data.optInt("setting_music"));
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_music", music);
-// ApkUtils.hideSystemSettingAPP(InitJpushServer.this, "com.android.music");
+// Settings.System.putInt(this.getContentResolver(), "qch_app_music", music);
+// ApkUtils.hideSystemSettingAPP(this, "com.android.music");
// Log.e("SystemSetting", "qch_app_music" + music);
// //图库
// int gallery = changeNum(data.optInt("setting_picture"));
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_gallery", gallery);
-// ApkUtils.hideSystemSettingAPP(InitJpushServer.this, "com.android.gallery3d");
+// Settings.System.putInt(this.getContentResolver(), "qch_app_gallery", gallery);
+// ApkUtils.hideSystemSettingAPP(this, "com.android.gallery3d");
// Log.e("SystemSetting", "qch_app_gallery" + gallery);
// //壁纸
// int wallpaper = changeNum(data.optInt("setting_wallpaper"));
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_wallpaper", wallpaper);
+// Settings.System.putInt(this.getContentResolver(), "qch_app_wallpaper", wallpaper);
// Log.e("SystemSetting", "qch_app_wallpaper" + wallpaper);
// //文件管理器
// int filemanager = changeNum(data.optInt("setting_file"));
-// Settings.System.putInt(InitJpushServer.this.getContentResolver(), "qch_app_filemanager", filemanager);
+// Settings.System.putInt(this.getContentResolver(), "qch_app_filemanager", filemanager);
// if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
-// ApkUtils.hideSystemSettingAPP(InitJpushServer.this, "com.mediatek.filemanager");
+// ApkUtils.hideSystemSettingAPP(this, "com.mediatek.filemanager");
// } else {
-// ApkUtils.hideSystemSettingAPP(InitJpushServer.this, "com.android.documentsui");
+// ApkUtils.hideSystemSettingAPP(this, "com.android.documentsui");
// }
// Log.e("SystemSetting", "qch_app_filemanager" + filemanager);
// } catch (Exception e) {
@@ -1508,83 +1590,5 @@ public class InitJpushServer extends Service {
// }
}
- private int changeNum(int status) {
- int num = 1;
- switch (status) {
- case 0:
- num = 1;
- break;
- case 1:
- num = 0;
- break;
- default:
- num = 1;
- }
- return num;
- }
- private Handler mHandler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- switch (msg.what) {
- case 200:
- com.alibaba.fastjson.JSONObject jsonObject = (com.alibaba.fastjson.JSONObject) msg.obj;
- installAPK(jsonObject);
- break;
- case -200:
- Log.e("fht", "no update");
- }
- }
-
- };
-
- private void installAPK(com.alibaba.fastjson.JSONObject jsonObject) {
- String url = jsonObject.getString("url");
- int versionCode = jsonObject.getInteger("version_code");
- String packageName = jsonObject.getString("package");
- String app_name = jsonObject.getString("app_name");
- com.alibaba.fastjson.JSONObject object = new com.alibaba.fastjson.JSONObject();
- object.put("app_name", app_name);
- object.put("app_package", packageName);
- PackageManager pm = getPackageManager();
- PackageInfo packageInfo = null;
- try {
- packageInfo = pm.getPackageInfo(packageName, 0);
- } catch (PackageManager.NameNotFoundException e) {
- e.printStackTrace();
- }
- if (packageInfo == null || packageInfo.versionCode < versionCode) {
-// Aria.download(this)
-// .load(url) //读取下载地址
-// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(packageName) + ".apk", true)
-// .setExtendField(object.toJSONString())
-// .create(); //启动下载}
- Utils.ariaDownload(this, url, object);
- } else {
- Log.e("fht", "无需更新");
- }
-
- }
-
- private void showTopAcivity() {
-// if (true) {
-// Intent intent = new Intent(InitJpushServer.this, TopActivity.class);
-// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-// intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
-// startActivity(intent);
-// }
-
- }
-
-
- @Override
- public void onDestroy() {
- super.onDestroy();
- if (null != lockScreenReceiver) {
- unregisterReceiver(lockScreenReceiver);
- }
- Log.e("fht", "InitJpushServer onDestroy");
-
- }
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/MainService.java b/app/src/main/java/com/mjsheng/myappstore/server/MainService.java
new file mode 100644
index 0000000..c06daf2
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/server/MainService.java
@@ -0,0 +1,449 @@
+package com.mjsheng.myappstore.server;
+
+import android.annotation.SuppressLint;
+import android.app.Service;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.graphics.Color;
+import android.graphics.PixelFormat;
+import android.os.Build;
+import android.os.IBinder;
+import android.os.SystemClock;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.TextView;
+
+import com.google.gson.JsonObject;
+import com.mjsheng.myappstore.R;
+import com.mjsheng.myappstore.activity.MainActivity;
+import com.mjsheng.myappstore.activity.MainContact;
+import com.mjsheng.myappstore.activity.MainPresenter;
+import com.mjsheng.myappstore.utils.ApkUtils;
+import com.mjsheng.myappstore.utils.ForegroundAppUtil;
+import com.mjsheng.myappstore.utils.SaveListUtils;
+import com.mjsheng.myappstore.utils.SysSettingUtils;
+import com.mjsheng.myappstore.utils.TimeUtils;
+
+public class MainService extends Service implements MainContact.MainView {
+ private MainPresenter mPresenter;
+ private static final String TAG = MainService.class.getSimpleName();
+ private boolean netWorkIsRunning = false;
+
+ public MainService() {
+
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ return null;
+ }
+
+
+ @Override
+ public void onCreate() {
+ mPresenter = new MainPresenter(this);
+ mPresenter.attachView(this);
+ registerReceivers();
+ super.onCreate();
+ }
+
+ @Override
+ public void onDestroy() {
+ super.onDestroy();
+ unRegisterReceivers();
+ mPresenter.detachView();
+ }
+
+ long timeMillis;
+
+ long startCommandTime = 0;
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ if ((SystemClock.elapsedRealtime() - startCommandTime) < 60000) {
+ Log.e(TAG, "onStartCommand: " + "启动时间过短");
+ //一分钟内防止多次调用
+ } else {
+ startCommandTime = SystemClock.elapsedRealtime();
+ if (MainActivity.isForeground){
+ mPresenter.getFirstConnect();
+ timeMillis = System.currentTimeMillis();
+ mPresenter.getLockedState();
+ Log.e(TAG, "onStartCommand: "+(SystemClock.elapsedRealtime() - startCommandTime));
+ }else {
+ Log.e(TAG, "onStartCommand: isForeground: " + MainActivity.isForeground);
+
+ }
+ }
+ return START_STICKY;
+ }
+
+ private void registerReceivers() {
+ registerLockScreenReceiver();
+ registerTimeReceiver();
+ }
+
+ private void unRegisterReceivers() {
+ if (null != lockScreenReceiver) {
+ unregisterReceiver(lockScreenReceiver);
+ }
+ if (null != mTimeChangedReceiver) {
+ unregisterReceiver(mTimeChangedReceiver);
+ }
+ }
+
+ private static WindowManager windowManager;
+ private View topView;
+ boolean screenlocked = false;
+ boolean timelocked = false;
+
+ @SuppressLint("NewApi")
+ private void showFloatingWindow(String name) {
+ if (Settings.canDrawOverlays(this)) {
+ // 获取WindowManager服务
+ if (null == windowManager) {
+ windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
+ }
+ DisplayMetrics dm = new DisplayMetrics();
+ windowManager.getDefaultDisplay().getRealMetrics(dm);
+ int width = dm.widthPixels; // 屏幕宽度(像素)
+ int height = dm.heightPixels; // 屏幕高度(像素)
+ // 新建悬浮窗控件
+ final Button button = new Button(getApplicationContext());
+ button.setText("霸屏测试");
+ button.setAlpha(0.9f);
+ button.setBackgroundColor(Color.WHITE);
+ button.setOnClickListener(new View.OnClickListener() {
+ @Override
+ public void onClick(View v) {
+// windowManager.removeView(button);
+ }
+ });
+ if (null == topView) {
+ topView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.activity_top, null);
+ TextView textView = topView.findViewById(R.id.textView);
+ textView.setText(name);
+ } else {
+ if (topView.getTag().equals("added")) {
+ TextView textView = topView.findViewById(R.id.textView);
+ textView.setText(name);
+ return;
+ }
+ }
+// topView.setAlpha(0.8f);
+ TextView textView = topView.findViewById(R.id.textView);
+ textView.setText(name);
+ // 设置LayoutParam
+ WindowManager.LayoutParams layoutParams = new WindowManager.LayoutParams();
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ layoutParams.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+ } else {
+ layoutParams.type = WindowManager.LayoutParams.TYPE_PHONE;
+ }
+ layoutParams.flags = WindowManager.LayoutParams.FLAG_BLUR_BEHIND;
+ layoutParams.format = PixelFormat.RGBA_8888;
+ layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
+ layoutParams.height = WindowManager.LayoutParams.MATCH_PARENT;
+ layoutParams.x = 0;
+ layoutParams.y = 0;
+
+ // 将悬浮窗控件添加到WindowManager
+ windowManager.addView(topView, layoutParams);
+ topView.setTag("added");
+ }
+ }
+
+ private void hideFloatingWindow() {
+ if (null == windowManager) {
+ return;
+ }
+ if (null != topView) {
+ windowManager.removeView(topView);
+ topView = null;
+ }
+ }
+
+ private LockScreenReceiver lockScreenReceiver;
+
+ private void registerLockScreenReceiver() {
+ if (null == lockScreenReceiver) {
+ lockScreenReceiver = new LockScreenReceiver();
+ IntentFilter filter = new IntentFilter();
+ filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ filter.addAction(LockScreenReceiver.action_lock);
+ filter.addAction(LockScreenReceiver.action_unlock);
+ registerReceiver(lockScreenReceiver, filter);
+ }
+ }
+
+ public class LockScreenReceiver extends BroadcastReceiver {
+ public static final String action_lock = "LockScreenReceiver_lockscreen";
+ public static final String action_unlock = "LockScreenReceiver_unlockscreen";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (TextUtils.isEmpty(action)) {
+ return;
+ }
+ if (action_lock.equals(action)) {
+ String name = intent.getStringExtra("name");
+ if (!timelocked) {
+ showFloatingWindow(name);
+ }
+ screenlocked = true;
+ } else if (action_unlock.equals(action)) {
+ if (!timelocked) {
+ hideFloatingWindow();
+ }
+ screenlocked = false;
+ }
+ }
+ }
+
+ private TimeChangedReceiver mTimeChangedReceiver;
+
+ /**
+ * 监听时间变化
+ */
+ public void registerTimeReceiver() {
+ mTimeChangedReceiver = new TimeChangedReceiver();
+ IntentFilter filter = new IntentFilter();
+ filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
+ filter.addAction(Intent.ACTION_DATE_CHANGED);
+ filter.addAction(Intent.ACTION_TIME_CHANGED);
+ filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
+ filter.addAction(Intent.ACTION_TIME_TICK);
+ filter.addAction(TimeChangedReceiver.ACTION_UPDATE);
+ registerReceiver(mTimeChangedReceiver, filter);
+ }
+
+ public class TimeChangedReceiver extends BroadcastReceiver {
+
+ public static final String ACTION_UPDATE = "TimeChangedReceiver_update";
+
+ @SuppressLint("NewApi")
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Intent.ACTION_DATE_CHANGED.equals(intent.getAction())) {
+ Log.e("fht", "TimeChangedReceiver:" + "data changed");
+ } else if (Intent.ACTION_TIME_CHANGED.equals(intent.getAction())) {
+ Log.e("fht", "TimeChangedReceiver:" + "time changed");
+ } else if (Intent.ACTION_TIMEZONE_CHANGED.equals(intent.getAction())) {
+ Log.e("fht", "TimeChangedReceiver:" + "timezone changed");
+ } else if (Intent.ACTION_TIME_TICK.equals(intent.getAction())) {
+ Log.e("fht", "TimeChangedReceiver:" + "time tick");
+ } else if (ACTION_UPDATE.equals(intent.getAction())) {
+ Log.e("fht", "TimeChangedReceiver:" + "date update");
+ }
+ ForegroundAppUtil.openTopApp(context);
+ long nowTime = System.currentTimeMillis();
+ TimeUtils.ContralTime contralTime = TimeUtils.getDefaltContralTime(MainService.this);
+ if (null != contralTime) {
+ if (contralTime.inControlTime(nowTime)) {
+ if (!screenlocked) {
+ showFloatingWindow("管控时间:" + contralTime.toString());
+ } else {
+ TextView textView = topView.findViewById(R.id.textView);
+ textView.setText("管控时间:" + contralTime.toString());
+ }
+ timelocked = true;
+ } else {
+ mPresenter.getScreenLockState();
+ if (!screenlocked) {
+ hideFloatingWindow();
+ }
+ timelocked = false;
+ }
+ } else {
+ if (!screenlocked) {
+ hideFloatingWindow();
+ }
+ mPresenter.getScreenLockState();
+ timelocked = false;
+ }
+
+ }
+ }
+
+
+ @Override
+ public void setBatchText(String text, int visibility) {
+
+ }
+
+ @Override
+ public void setClassText(String text, int visibility) {
+
+ }
+
+ @Override
+ public void setNumberText(String text, int visibility) {
+
+ }
+
+ @Override
+ public void setNameText(String text, int visibility) {
+
+ }
+
+ @Override
+ public void setLockedState(boolean loocked) {
+ if (loocked) {
+ ApkUtils.getAppInfo(this);
+ //上传APP信息
+ if (netWorkIsRunning) {
+ //如果正在执行,不执行
+ return;
+ }
+ mPresenter.sendMACAddress();
+ //发送设备mac地址和信息
+ mPresenter.setJpushAlias();
+ //设置极光推送别名
+ SaveListUtils.getList();
+ mPresenter.getSystemSettingbegin();
+ netWorkIsRunning = true;
+ } else {
+ netWorkIsRunning = false;
+ SysSettingUtils.setEnableSetting(this);
+ }
+ }
+
+ @Override
+ public void setFirstConnect(boolean state) {
+ Log.e(TAG, "isFirstConnect: " + "end request");
+ if (state) {
+ mPresenter.setDisableSetting();
+ } else {
+
+ }
+ }
+
+ @Override
+ public void sendMACFinished() {
+ mPresenter.updateDeviceInfo();
+ }
+
+ @Override
+ public void updateDeviceInfoFinished() {
+ mPresenter.getSnTimeControl();
+ }
+
+ @Override
+ public void getSnTimeControlFinished() {
+
+ }
+
+ @Override
+ public void setAliasFinished() {
+ mPresenter.setJpushTags();
+ //设置极光推送tag
+ }
+
+ @Override
+ public void setTagsFinished() {
+ mPresenter.checkStoreUpdate();
+ }
+
+ @Override
+ public void checkStoreUpdateFinished() {
+ mPresenter.checkTestUpdate();
+ }
+
+ @Override
+ public void checkTestUpdateFinished() {
+ mPresenter.getDefaultDesktop();
+ }
+
+ @Override
+ public void buttonCheckUpdateFinished(boolean update, JsonObject jsonObject) {
+
+ }
+
+ @Override
+ public void getSystemSettingbegin() {
+ mPresenter.getAppLimit();
+ }
+
+ @Override
+ public void getAppLimitFinished(String packageList) {
+ mPresenter.getDeviceBatch(packageList);
+ }
+
+ @Override
+ public void getDeviceBatchFinished() {
+ mPresenter.getForceDownload();
+ }
+
+ @Override
+ public void getForceDownloadFinished() {
+ mPresenter.getBrowserList();
+ }
+
+ @Override
+ public void getBrowserListFinished() {
+ mPresenter.getBrowserBookmarks();
+ }
+
+ @Override
+ public void getBrowserBookmarksFinished() {
+ mPresenter.getDesktopIcon();
+ }
+
+ @Override
+ public void getDesktopIconFinished() {
+ mPresenter.getAppAutoStartUpdateAndNet();
+ }
+
+ @Override
+ public void getAppAutoStartUpdateAndNetFinished() {
+ mPresenter.getAppIDControl();
+ }
+
+ @Override
+ public void getAppIDControlFinished() {
+ mPresenter.setAppinsideWeb();
+ }
+
+ @Override
+ public void setAppinsideWebFinished() {
+ mPresenter.setSystemSetting();
+ }
+
+ @Override
+ public void setSystemSettingFinished() {
+ netWorkIsRunning = false;
+ Log.e(TAG, "SettingFinished: " + (System.currentTimeMillis() - timeMillis) + " ms");
+ }
+
+ @Override
+ public void setScreenLockStateFinished(boolean locked, String tips) {
+ if (locked) {
+ if (!timelocked) {
+ showFloatingWindow(tips);
+ }
+ screenlocked = true;
+ } else {
+ if (!timelocked) {
+ hideFloatingWindow();
+ }
+ screenlocked = false;
+ }
+ }
+
+ @Override
+ public void getDefaultDesktopFinished() {
+
+ }
+
+
+
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/server/StepService.java b/app/src/main/java/com/mjsheng/myappstore/server/StepService.java
index 66b666d..4c03678 100644
--- a/app/src/main/java/com/mjsheng/myappstore/server/StepService.java
+++ b/app/src/main/java/com/mjsheng/myappstore/server/StepService.java
@@ -15,12 +15,12 @@ import android.content.ServiceConnection;
import android.os.Binder;
import android.os.Handler;
import android.os.IBinder;
-import androidx.annotation.Nullable;
import android.util.Log;
-import com.blankj.utilcode.util.LogUtils;
+import androidx.annotation.Nullable;
+
import com.mjsheng.myappstore.KeepAliveConnection;
-import com.mjsheng.myappstore.network.Network;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
import com.mjsheng.myappstore.utils.ServiceAliveUtils;
import com.mjsheng.myappstore.utils.Utils;
@@ -49,10 +49,10 @@ public class StepService extends Service {
private ServiceConnection mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName componentName, IBinder iBinder) {
- LogUtils.e(TAG, "StepService:建立链接");
+ Log.e(TAG, "StepService:建立链接");
boolean isServiceRunning = ServiceAliveUtils.isServiceAlice(StepService.this);
if (!isServiceRunning) {
- Intent i = new Intent(StepService.this, MyDownloadService.class);
+ Intent i = new Intent(StepService.this, StepService.class);
startService(i);
}
}
@@ -107,7 +107,7 @@ public class StepService extends Service {
* 初始化websocket连接
*/
private void initSocketClient() {
- URI uri = URI.create(Network.WebsocketURL);
+ URI uri = URI.create(NetInterfaceManager.WEBSOCKET_URL);
// URI uri = URI.create("ws://echo.websocket.org");
// URI uri = URI.create("ws://123.207.136.134:9010/ajaxchattest");
client = new JWebSocketClient(uri) {
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
index 5554ed5..c26d97a 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/ApkUtils.java
@@ -34,8 +34,8 @@ import com.google.gson.Gson;
import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.R;
import com.mjsheng.myappstore.bean.UploadAppInfo;
+import com.mjsheng.myappstore.manager.NetInterfaceManager;
import com.mjsheng.myappstore.network.URLAddress;
-import com.mjsheng.myappstore.network.Network;
import com.mjsheng.myappstore.network.api.UploadAppInfoApi;
import java.io.BufferedReader;
@@ -1072,8 +1072,8 @@ public class ApkUtils {
String jsonString = gson.toJson(appList);
// Log.e("mjsheng", "json========" + jsonString);
- UploadAppInfoApi uploadAppInfoApi = Network.getUploadAppInfoApi();
- uploadAppInfoApi.getUploadAppInfoApi(URLAddress.HTTP_KEY, Utils.getSerial(), jsonString)
+ UploadAppInfoApi uploadAppInfoApi = NetInterfaceManager.getUploadAppInfoApi();
+ uploadAppInfoApi.getUploadAppInfoApi(NetInterfaceManager.HTTP_KEY, Utils.getSerial(), jsonString)
.subscribeOn(io.reactivex.schedulers.Schedulers.io())
.observeOn(io.reactivex.android.schedulers.AndroidSchedulers.mainThread())
.subscribe(new io.reactivex.Observer() {
@@ -1085,7 +1085,7 @@ public class ApkUtils {
@Override
public void onNext(ResponseBody responseBody) {
try {
- Log.e("mjhseng", "上传的结果" + responseBody.string());
+ Log.e("getAppInfo", "上传的结果" + responseBody.string());
} catch (IOException e) {
e.printStackTrace();
}
@@ -1093,7 +1093,7 @@ public class ApkUtils {
@Override
public void onError(Throwable e) {
- Log.e("mjsheng", "UploadAppInfoApi=onError:");
+ Log.e("getAppInfo", "UploadAppInfoApi=onError:");
}
@Override
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/ExampleUtil.java b/app/src/main/java/com/mjsheng/myappstore/utils/ExampleUtil.java
index 8cec22d..2d6e022 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/ExampleUtil.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/ExampleUtil.java
@@ -7,11 +7,19 @@ import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
+import android.os.Build;
import android.os.Bundle;
+import android.os.Environment;
import android.os.Looper;
+import android.os.storage.StorageManager;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
+import java.io.File;
+import java.lang.reflect.Array;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.text.DecimalFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -129,4 +137,116 @@ public class ExampleUtil {
public static String getDeviceId(Context context) {
return JPushInterface.getUdid(context);
}
+
+ public static class StorageUtils {
+
+
+ // 获取存储空间 false 内置sd卡路径,true 外置sd卡路径
+ public static File getStoragePath(Context mContext, boolean isSDcard) {
+ StorageManager mStorageManager = (StorageManager) mContext.getSystemService(Context.STORAGE_SERVICE);
+ Class> storageVolumeClazz = null;
+ try {
+ storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");
+ Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");
+ Method getPath = storageVolumeClazz.getMethod("getPath");
+ Method isRemovable = storageVolumeClazz.getMethod("isRemovable");
+ Object result = getVolumeList.invoke(mStorageManager);
+ final int length = Array.getLength(result);
+ for (int i = 0; i < length; i++) {
+ Object storageVolumeElement = Array.get(result, i);
+ String path = (String) getPath.invoke(storageVolumeElement);
+ boolean removable = (Boolean) isRemovable.invoke(storageVolumeElement);
+ if (isSDcard == removable) {
+ File file = new File(path);
+ if (file.exists()) {
+ return file;
+ }else {
+ if (!isSDcard) {
+ return Environment.getExternalStorageDirectory();
+ } else {
+ File file1 = new File("root/storage/sdcard1");
+ if (file1.exists()){
+ return file1;
+ }else {
+ File file2 = new File("storage/sdcard1");
+ if (file2.exists()){
+ return file2;
+ }else {
+ File file3 = new File("/storage/emulated/0");
+ if (file3.exists()){
+ return file3;
+ }else {
+ return null;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ } catch (ClassNotFoundException e) {
+ e.printStackTrace();
+ } catch (InvocationTargetException e) {
+ e.printStackTrace();
+ } catch (NoSuchMethodException e) {
+ e.printStackTrace();
+ } catch (IllegalAccessException e) {
+ e.printStackTrace();
+ }
+ return null;
+ }
+
+
+
+ public static String getFileCache(Context context, String s) {
+ return getExternalFilesDir(context, s).getAbsolutePath();
+ }
+
+ public static String getFileRoot(Context context) {
+ return getExternalFilesDir(context, "Download").getAbsolutePath();
+ }
+
+ public static File getExternalFilesDir(Context context, String s) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) {
+ File path = context.getExternalFilesDir(s);
+ if (path != null) {
+ return path;
+ }
+ }
+ final String cacheDir = "/Android/data/" + context.getPackageName() + "/files/" + s;
+ return new File(Environment.getExternalStorageDirectory().getPath() + cacheDir);
+ }
+
+
+ // 检测文件是否存在
+ public static boolean isFileIsExists(String filePath){
+ try{
+ File f=new File(filePath);
+ if(!f.exists()){
+ return false;
+ }
+ }catch (Exception e) {
+ return false;
+ }
+ return true;
+ }
+
+
+ public static String size(long size) {
+ if (size / (1024 * 1024) > 0) {
+ float tmpSize = (float) (size) / (float) (1024 * 1024 );
+ DecimalFormat df = new DecimalFormat("#.##");
+ return "" + df.format(tmpSize) + "GB";
+ } else if (size / 1024 > 0) {
+ float tmpSize = (float) (size) / (float) 1024 ;
+ DecimalFormat df = new DecimalFormat("#.##");
+ return "" + df.format(tmpSize) + "MB";
+ } else if (size > 0) {
+ return "" + (size ) + "KB";
+ } else {
+ return "" + (size) + "KB";
+ }
+ }
+
+ }
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java
new file mode 100644
index 0000000..5a12fde
--- /dev/null
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/JGYUtils.java
@@ -0,0 +1,577 @@
+package com.mjsheng.myappstore.utils;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
+import android.os.BatteryManager;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.PowerManager;
+import android.provider.Settings;
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.alibaba.fastjson.JSONObject;
+import com.google.gson.JsonObject;
+import com.mjsheng.myappstore.BuildConfig;
+import com.mjsheng.myappstore.base.BaseApplication;
+import com.mjsheng.myappstore.bean.Appground;
+import com.mjsheng.myappstore.bean.BaseResponse;
+import com.mjsheng.myappstore.bean.ForceDownloadData;
+import com.mjsheng.myappstore.bean.NetAndLaunchBean;
+import com.mjsheng.myappstore.bean.NetAndLaunchData;
+import com.mjsheng.myappstore.comm.CommonDatas;
+import com.mjsheng.myappstore.server.InitJpushServer;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+public class JGYUtils {
+ private static final String TAG = JGYUtils.class.getSimpleName();
+ private static JGYUtils sInstance;
+ private Context mContext;
+ public static final String ROOT_URL = BuildConfig.ROOT_URL;
+
+ private JGYUtils(Context context) {
+ this.mContext = context;
+ }
+
+ public static void init(Context context) {
+ if (sInstance == null) {
+ sInstance = new JGYUtils(context);
+ }
+ }
+
+ public static JGYUtils getInstance() {
+ if (sInstance == null) {
+ throw new IllegalStateException("You must be init JGYUtils first");
+ }
+ return sInstance;
+ }
+
+
+ public void resetDevice() {
+ boolean isReset = MySQLData.GetBooleanData(mContext, CommonDatas.IS_RESET);
+ int batteryLevel = getBatteryLevel();
+ Log.e(TAG, "batteryLevel:" + batteryLevel + " isReset" + isReset);
+ if (isReset && batteryLevel >= CommonDatas.MIN_POWER) {
+ Utils.doMasterClear(mContext);
+ }
+ }
+
+
+ private int getBatteryLevel() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
+ BatteryManager batteryManager = (BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE);
+ return batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
+ } else {
+ Intent intent = new ContextWrapper(mContext).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
+ return (intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1) * 100) /
+ intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
+ }
+ }
+
+
+ private PowerManager.WakeLock wakeLock = null;
+ private static final String mWakeLockName = "BackupService";
+
+ /**
+ * 获取电源锁,保持该服务在屏幕熄灭时仍然获取CPU时,保持运行
+ */
+ @SuppressLint("InvalidWakeLockTag")
+ private synchronized void acquireWakeLock() {
+ if (null == wakeLock) {
+ PowerManager pm = (PowerManager) mContext.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;
+ }
+ }
+
+ /**
+ * 应用自启升级和网络权限管理
+ *
+ * @param netAndLaunchBean
+ */
+ public void setNetAndlaunch(NetAndLaunchBean netAndLaunchBean) {
+ Log.e(TAG, "setNetAndlaunch: ");
+ String net_ok = "";
+ String net_not = "";
+ String launch = "";
+ String camera_ok = "";
+ String camera_not = "";
+ String upgrade_ok = "";
+ String upgrade_not = "";
+ String slide_ok = "";
+ String slide_not = "";
+
+ List data = netAndLaunchBean.getData();
+ for (int i = 0; i < data.size(); i++) {
+ NetAndLaunchData netAndLaunchData = data.get(i);
+ String app_package = netAndLaunchData.getApp_package();
+ int is_auto = netAndLaunchData.getIs_auto();
+ int is_network = netAndLaunchData.getIs_network();
+ int is_camera = netAndLaunchData.getIs_camera();
+ int is_upgrade = netAndLaunchData.getIs_upgrade();
+ int is_slide = netAndLaunchData.getIs_slide();
+
+
+ if (is_auto == 1) {
+ launch += app_package + ",";
+ }
+ if (is_network == 1) {
+ net_ok += app_package + ",";
+ } else {
+ net_not += app_package + ",";
+ }
+
+ if (is_camera == 1) {
+ camera_ok += app_package + ",";
+ } else {
+ camera_not += app_package + ",";
+ }
+ if (is_upgrade == 1) {
+ upgrade_ok += app_package + ",";
+ } else {
+ upgrade_not += app_package + ",";
+ }
+ if (is_slide == 1) {
+ slide_ok += app_package + ",";
+ } else {
+ slide_not += app_package + ",";
+ }
+ }
+
+
+ if (!TextUtils.isEmpty(launch)) {
+ launch = launch.substring(0, launch.length() - 1);
+ }
+ if (!TextUtils.isEmpty(net_ok)) {
+ net_ok = net_ok.substring(0, net_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(net_not)) {
+ net_not = net_not.substring(0, net_not.length() - 1);
+ }
+ if (!TextUtils.isEmpty(camera_ok)) {
+ camera_ok = camera_ok.substring(0, camera_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(camera_not)) {
+ camera_not = camera_not.substring(0, camera_not.length() - 1);
+ }
+ if (!TextUtils.isEmpty(upgrade_ok)) {
+ upgrade_ok = upgrade_ok.substring(0, upgrade_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(upgrade_not)) {
+ upgrade_not = upgrade_not.substring(0, upgrade_not.length() - 1);
+ }
+ if (!TextUtils.isEmpty(slide_ok)) {
+ slide_ok = slide_ok.substring(0, slide_ok.length() - 1);
+ }
+ if (!TextUtils.isEmpty(slide_not)) {
+ slide_not = slide_not.substring(0, slide_not.length() - 1);
+ boolean writeSucceed = Settings.System.putString(mContext.getContentResolver(), "qch_disable_slide", slide_not);
+ Log.e("fht", "qch_disable_slide=" + writeSucceed + ":" + slide_not);
+ } else {
+ boolean writeSucceed = Settings.System.putString(mContext.getContentResolver(), "qch_disable_slide", "Invalid");
+ Log.e("fht", "qch_disable_slide ok=" + writeSucceed + ":" + slide_ok);
+ }
+
+ Utils.writeDisableUpdateList(mContext, upgrade_not.split(","), upgrade_ok.split(","));
+ boolean qch_app_power_on = Settings.System.putString(mContext.getContentResolver(), "qch_app_power_on", launch);
+// Intent netControlIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY_DIS);
+// netControlIntent.putExtra("package_name", net_not);
+// sendBroadcast(netControlIntent);
+//
+// Intent netControlNotIntent = new Intent(CommonDatas.ACTION_HrReceiver_JGY);
+// netControlNotIntent.putExtra("package_name", net_ok);
+// sendBroadcast(netControlNotIntent);
+ if (!net_not.equals("")) {
+ String[] bans = net_not.split(",");
+ Settings.System.putString(mContext.getContentResolver(), "qch_jgy_network_disallow", net_not);
+ Log.e("fht", "ban::" + net_not);
+
+ }
+ BaseApplication.getInstance().setFinished(true);
+ if (!net_ok.equals("")) {
+ String[] nots = net_ok.split(",");
+ Settings.System.putString(mContext.getContentResolver(), "qch_jgy_network_allow", net_ok);
+ Log.e("fht", "not::" + net_ok);
+ }
+
+// Intent intent2 = new Intent("qch_camera_forbid");
+// intent2.putExtra("camera_package_name", camera_not).setPackage("com.android.settings");
+// sendBroadcast(intent2);
+// Intent intent1 = new Intent("qch_camera_open");
+// intent1.putExtra("camera_package_name", camera_ok).setPackage("com.android.settings");
+// sendBroadcast(intent1);
+ }
+
+ /**
+ * @param s1 需要管控的ID
+ * @param result 应用程序包名
+ */
+ public void writeDeselectIDtoSystem(String s1, String result) {
+ if (!TextUtils.isEmpty(s1) && !TextUtils.isEmpty(result)) {
+ String appstore = "com.jiaoguanyi.appstore";
+ String store = "com.jiaoguanyi.store";
+ Log.e("writeDeselectIDtoSystem", "result: " + result);
+ if (!result.contains(appstore)) {
+ result = result + "," + appstore;
+ }
+ if (!result.contains(store)) {
+ result = result + "," + store;
+ }
+ String olddeselectViewArray = Settings.System.getString(mContext.getContentResolver(), "qch_app_forbid_id");
+ Log.e("writeDeselectIDtoSystem", "olddeselectViewArray" + olddeselectViewArray);
+ Settings.System.putString(mContext.getContentResolver(), "qch_app_forbid_id", result);
+ Settings.System.putString(mContext.getContentResolver(), "DeselectViewArray", s1);
+ Log.e("writeDeselectIDtoSystem", "qch_app_forbid_id" + result);
+ Log.e("writeDeselectIDtoSystem", "deselectViewArray" + s1);
+ } else {
+ Log.e("writeDeselectIDtoSystem", "writeDeselectIDtoSystem is null:");
+ Settings.System.putString(mContext.getContentResolver(), "DeselectViewArray", "Invalid");
+ }
+ }
+
+
+ public void setAppinsideWeb(BaseResponse> response) {
+ if (response.code == 200) {
+ List appgrounds = response.data;
+ if (appgrounds != null && appgrounds.size() > 0) {
+ String strings = "";
+ String packageList = "";//单条管控名单
+ for (Appground appground : appgrounds) {
+ if (appground.getAddress().equals("")) {
+ packageList += appground.getPackages() + ",";
+ } else {
+ strings += appground.toString() + ";";
+ }
+ }
+ if (packageList.length() > 0) {
+ //app内所有的网页禁止
+ //packageList = packageList.substring(0, packageList.length() - 1);
+ //去掉多余的,
+ Log.e("setAppinsideWeb ", "packageList:" + packageList);
+ Intent qch_app_website = new Intent("qch_app_website")
+ .setPackage("com.android.settings");
+ qch_app_website.putExtra("package_name", packageList);
+ mContext.sendBroadcast(qch_app_website);
+ } else {
+ sendAllweb(mContext);
+ }
+ if (strings.length() > 0) {
+ //app内单个网页地址禁止打开
+ //strings = strings.substring(0, strings.length() - 1);
+ //去掉多余的;
+ Log.e("setAppinsideWeb ", "strings:" + strings);
+ Intent intent = new Intent("qch_app_inside_website")
+ .setPackage("com.android.settings");
+ intent.putExtra("websitelist", strings);
+ mContext.sendBroadcast(intent);
+ } else {
+ sendwebUrl(mContext);
+ }
+ }
+ } else if (response.code == 400) {
+ //列表为空的情况
+ sendAllweb(mContext);
+ sendwebUrl(mContext);
+ //ToastUtil.show(msg);
+ Log.e("setAppinsideWeb", "setAppinsideWeb: " + response.msg);
+ }
+ }
+
+ private static void sendAllweb(Context context) {
+ Intent intent = new Intent("qch_app_website")
+ .setPackage("com.android.settings");
+ intent.putExtra("package_name", "Invalid");
+ context.sendBroadcast(intent);
+ }
+
+ private static void sendwebUrl(Context context) {
+ Intent intent = new Intent("qch_app_inside_website")
+ .setPackage("com.android.settings");
+ intent.putExtra("websitelist", "Invalid");
+ context.sendBroadcast(intent);
+ }
+
+ public void SettingSysData(String data) {
+ SPUtils.put(mContext, "first_connect", 1);
+ SysSettingUtils.setSystemSetting(mContext, data);
+ }
+
+ public void writeAppPackageList(String result) {
+ String appstore = "com.jiaoguanyi.appstore";
+ String store = "com.jiaoguanyi.store";
+ String info = "com.info.sn";
+// String iflytek = "com.estrongs.android.pop";
+ String jgy1 = "com.uiuios.jgy1";
+ String jgy2 = "com.uiuios.jgy2";
+ if (!TextUtils.isEmpty(result)) {
+ Log.e("writeAppPackageList", "result: " + result);
+ if (!result.contains(appstore)) {
+ result = result + "," + appstore;
+ }
+ if (!result.contains(store)) {
+ result = result + "," + store;
+ }
+ if (!result.contains(jgy1)) {
+ result = result + "," + jgy1;
+ }
+ if (!result.contains(jgy2)) {
+ result = result + "," + jgy2;
+ }
+ if (!result.contains(info)) {
+ result = result + "," + info;
+ }
+ boolean b = Settings.System.putString(mContext.getContentResolver(), "qch_app_forbid", result);
+ Log.e("mjsheng", "qch_app_forbid is :" + b + Settings.System.getString(mContext.getContentResolver(), "qch_app_forbid"));
+
+ } else {
+ Log.e("mjsheng", "writeAppPackageList is null:");
+
+ }
+ }
+
+ public void forceDownload(List data) {
+ if (data == null || data.size() <= 0) {
+ return;
+ }
+ getSelfDownload(data);
+ List list = new ArrayList<>();
+ for (int i = 0; i < data.size(); i++) {
+ ForceDownloadData forceDownloadData = data.get(i);
+ String app_name = forceDownloadData.getApp_name();
+ String app_package = forceDownloadData.getApp_package();
+ String app_url = forceDownloadData.getApp_url();
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("app_name", app_name);
+ jsonObject.put("app_package", app_package);
+ int app_version_code = forceDownloadData.getApp_version_code();
+ Log.e("fht ", "packageName=" + app_package + ",URL= " + app_url + ",app_version_code=" + app_version_code);
+ if (data.get(i).getApp_package().equals("com.jiaoguanyi.appstore")) {
+ continue;//为自身的跳过下载
+ }
+ if (!list.contains(app_package)) {
+ list.add(app_package);
+ }
+ PackageManager pm = mContext.getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(app_package, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ Log.e("fht", "forceDownload=" + e.getMessage());
+ }
+ if (packageInfo != null) {
+ long appVersionCode;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ appVersionCode = packageInfo.getLongVersionCode();
+ } else {
+ appVersionCode = packageInfo.versionCode;
+ }
+ if (app_version_code > appVersionCode) {
+ Log.e("fht ", "download URL " + app_url);
+// Aria.download(this)
+// .load(app_url) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(app_package) + ".apk", true)
+// .setExtendField(jsonObject.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(mContext, app_url, jsonObject);
+ }
+ } else {
+ Log.e("fht ", "download URL " + app_url);
+// if (!SaveListUtils.isDownLoading(app_package)) {
+// Aria.download(this)
+// .load(app_url) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString(app_package) + ".apk", true)
+// .setExtendField(jsonObject.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(mContext, app_url, jsonObject);
+
+// SaveListUtils.addDownLoadList(app_package);
+// }
+ }
+ }
+ SaveListUtils.setList(list);
+ SaveListUtils.sendForceAPP(mContext);
+ }
+
+ private void getSelfDownload(List forceDownloadDataList) {
+ for (ForceDownloadData forceDownloadData : forceDownloadDataList) {
+ if ("com.jiaoguanyi.store".equals(forceDownloadData.getApp_package())) {
+ if (!ApkUtils.isAvailable(mContext, "com.jiaoguanyi.store")) {
+ JSONObject jsonObject = new JSONObject();
+ jsonObject.put("app_name", forceDownloadData.getApp_name());
+ jsonObject.put("app_package", forceDownloadData.getApp_package());
+// Aria.download(this)
+// .load(forceDownloadData.getApp_url()) //读取下载地址
+// .setFilePath(PathUtils.getExternalDownloadsPath() + "/jgy/" + EncryptUtils.encryptMD5ToString("com.jiaoguanyi.store") + ".apk", true)
+// .setExtendField(jsonObject.toJSONString())
+// .create(); //启动下载}
+ Utils.ariaDownload(mContext, forceDownloadData.getApp_url(), jsonObject);
+
+ }
+ } else {
+// Log.e("fht", "未上传应用");
+ }
+ }
+ }
+
+
+ /**
+ * @param jsonObject 安装应用
+ */
+ public void installAPK(JsonObject jsonObject) {
+ final String url = jsonObject.get("url").getAsString();
+ int versionCode = jsonObject.get("version_code").getAsInt();
+ final String packageName = jsonObject.get("package").getAsString();
+ String app_name = jsonObject.get("app_name").getAsString();
+ final JSONObject object = new JSONObject();
+ object.put("app_name", app_name);
+ object.put("app_package", packageName);
+ PackageManager pm = mContext.getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (packageInfo == null || packageInfo.versionCode < versionCode) {
+ Utils.ariaDownload(mContext, url, object);
+ } else {
+ Log.e("installAPK", "已是最新版本");
+ }
+ }
+
+ public void installTestAPK(JsonObject jsonObject) {
+ final String url = jsonObject.get("app_url").getAsString();
+ int versionCode = jsonObject.get("app_version_code").getAsInt();
+ final String packageName = jsonObject.get("app_package").getAsString();
+ String app_name = jsonObject.get("app_name").getAsString();
+ final JSONObject object = new JSONObject();
+ object.put("app_name", app_name);
+ object.put("app_package", packageName);
+ PackageManager pm = mContext.getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (packageInfo == null || packageInfo.versionCode < versionCode) {
+ Utils.ariaDownload(mContext, url, object);
+ } else {
+ Log.e("installTestAPK", "TestAPK: " + "无更新");
+ }
+ }
+
+ public void installDesktop(JSONObject jsonObject) {
+ String app_name = jsonObject.getString("app_name");
+ String app_url = jsonObject.getString("app_url");
+ String app_package = jsonObject.getString("app_package");
+ int app_version_code = jsonObject.getInteger("app_version_code");
+ PackageInfo info = null;
+ PackageManager packageManager = mContext.getPackageManager();
+ if (null != packageManager) {
+ try {
+ info = packageManager.getPackageInfo(app_package, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ Log.e("fht", "installDesktop: " + e.getMessage());
+ }
+ if (null != info) {
+ long versionCode;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ versionCode = info.getLongVersionCode();
+ } else {
+ versionCode = info.versionCode;
+ }
+ if (app_version_code > versionCode) {
+ if (!SaveListUtils.isDownLoading(app_url)) {
+ Utils.ariaDownload(mContext, app_url, jsonObject);
+ }
+ }
+ } else {
+ if (!SaveListUtils.isDownLoading(app_url)) {
+ Utils.ariaDownload(mContext, app_url, jsonObject);
+ }
+ }
+ }
+
+ }
+
+ //删除用户除了在应用市场的其他应用
+ public void deleteOtherApp(String packageList) {
+ Log.e("deleteOtherApp", "packageList:" + packageList);
+ String[] result = packageList.split(",");
+ List resultList = new ArrayList<>(Arrays.asList(result));
+ List packageLists = ApkUtils.queryFilterAppInfo(mContext);
+
+ Log.e("deleteOtherApp", "packageLists:" + packageLists.toString());
+ if (resultList.size() > 0) {
+ for (final String packageName : packageLists) {
+ if (Utils.isSystemApp(mContext, packageName)) {
+ Log.e("deleteOtherApp", "is systemApp:" + packageName);
+ continue;
+ }
+ if (ApkUtils.canremove_systemapp.contains(packageName)) {
+ continue;
+ }
+ if (!resultList.contains(packageName)) {
+ new Thread(new Runnable() {
+ @Override
+ public void run() {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ ApkUtils.uninstall(mContext, packageName);
+ } else {
+ ApkUtils.deleteApkInSilence(packageName);
+ }
+ }
+ }).start();
+ Log.e("deleteOtherApp", "uninstall apkName:" + packageName);
+ }
+ }
+ }
+ }
+
+
+ /**
+ * 从Manifest中获取meta-data值
+ * https://blog.csdn.net/yue_233/article/details/91453451
+ *
+ * @return
+ */
+ public String getStringMetaData() {
+ ApplicationInfo appInfo = null;
+ try {
+ appInfo = mContext.getPackageManager().getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ String value = appInfo.metaData.getString("CHANNEL_VALUE");
+ return value;
+ }
+}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/ServiceAliveUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/ServiceAliveUtils.java
index d25496b..8a2535f 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/ServiceAliveUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/ServiceAliveUtils.java
@@ -4,8 +4,6 @@ import android.app.ActivityManager;
import android.content.Context;
import android.util.Log;
-import com.mjsheng.myappstore.MyApplication;
-
public class ServiceAliveUtils {
public static boolean isServiceAlice(Context mContext) {
boolean isServiceRunning = false;
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/TimeUtils.java b/app/src/main/java/com/mjsheng/myappstore/utils/TimeUtils.java
index a91e59d..265e1d5 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/TimeUtils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/TimeUtils.java
@@ -6,7 +6,7 @@ import androidx.annotation.NonNull;
import android.text.TextUtils;
-import com.mjsheng.myappstore.server.InitJpushServer;
+import com.mjsheng.myappstore.server.MainService;
import java.text.DateFormat;
import java.text.ParseException;
@@ -82,7 +82,7 @@ public class TimeUtils {
SPUtils.put(context, START_TIME_KEY, "00:00");
SPUtils.put(context, END_TIME_KEY, "00:00");
Intent intent = new Intent();
- intent.setAction(InitJpushServer.TimeChangedReceiver.ACTION_UPDATE);
+ intent.setAction(MainService.TimeChangedReceiver.ACTION_UPDATE);
context.sendBroadcast(intent);
}
diff --git a/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java b/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java
index 53190e5..233996e 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/ToastUtil.java
@@ -37,8 +37,8 @@ public class ToastUtil {
public void run() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
time2 = System.currentTimeMillis();
- if ((time2 - time1) > 3499) {
- showToast(mContext, msg, Toast.LENGTH_LONG);
+ if ((time2 - time1) > 3500) {
+ showToast(mContext, msg, Toast.LENGTH_SHORT);
Log.e("fht", "LENGTH_LONG");
time1 = time2;
}
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 a22daa5..ffe3496 100644
--- a/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
+++ b/app/src/main/java/com/mjsheng/myappstore/utils/Utils.java
@@ -32,7 +32,9 @@ import android.os.Build;
import android.os.Environment;
import android.os.StatFs;
import android.provider.Settings;
+
import androidx.annotation.RequiresApi;
+
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.format.Formatter;
@@ -57,7 +59,7 @@ import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.mjsheng.myappstore.BuildConfig;
import com.mjsheng.myappstore.R;
-import com.mjsheng.myappstore.MyApplication;
+import com.mjsheng.myappstore.base.BaseApplication;
import com.mjsheng.myappstore.comm.CommonDatas;
import java.io.BufferedReader;
@@ -441,14 +443,14 @@ public class Utils {
public static void unInstallAPP(Context context, String packageName) {
if (!TextUtils.isEmpty(packageName) && !AppsManagerUtils.isSystemApp(context, packageName)) {
if (AppsManagerUtils.isSystemApp(context, packageName)) {
- Toast.makeText(MyApplication.getAppContext(), R.string.system_unistall_error, Toast.LENGTH_SHORT).show();
+ Toast.makeText(BaseApplication.getAppContext(), R.string.system_unistall_error, Toast.LENGTH_SHORT).show();
} else {
Uri packageURI = Uri.parse("package:" + packageName);
Intent intent = new Intent(Intent.ACTION_DELETE, packageURI);
context.startActivity(intent);
}
} else {
- Toast.makeText(MyApplication.getAppContext(), R.string.unistall_error, Toast.LENGTH_SHORT).show();
+ Toast.makeText(BaseApplication.getAppContext(), R.string.unistall_error, Toast.LENGTH_SHORT).show();
}
}
@@ -672,6 +674,20 @@ public class Utils {
return "";
}
+ //获取教管易版本号
+ public static synchronized String getAPPVersionName(Context context) {
+ PackageManager pm = context.getPackageManager();
+ String versionName;
+ try {
+ PackageInfo packageInfo = pm.getPackageInfo("com.jiaoguanyi.store", 0);
+ versionName = packageInfo.versionName;
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ versionName = "0";
+ }
+ return versionName;
+ }
+
/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
diff --git a/app/src/main/res/layout-land/activity_home.xml b/app/src/main/res/layout-land/activity_home.xml
index c629931..5c26bed 100644
--- a/app/src/main/res/layout-land/activity_home.xml
+++ b/app/src/main/res/layout-land/activity_home.xml
@@ -4,7 +4,7 @@
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
- tools:context="com.mjsheng.myappstore.activity.MainActivity">
+ tools:context="com.mjsheng.myappstore.activity.HomeActivity">
+ tools:context="com.mjsheng.myappstore.activity.HomeActivity">
-
+