From 2339e1484d08894737b7a7f9f66cb72467c563a2 Mon Sep 17 00:00:00 2001 From: Godfather <981964879@qq.com> Date: Fri, 15 Apr 2022 11:40:02 +0800 Subject: [PATCH] =?UTF-8?q?version:4.2=20fix:=E4=BF=AE=E5=A4=8D=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E8=87=AA=E5=8A=A8=E4=B8=8B=E8=BD=BD=E5=BC=BA=E5=88=B6?= =?UTF-8?q?=E5=BA=94=E7=94=A8=EF=BC=8C=E9=94=81=E5=AE=9A=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E6=98=BE=E7=A4=BA=E9=97=AE=E9=A2=98=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=89=93=E5=BC=80=E4=B8=BB=E9=A1=B5=E5=88=A4=E6=96=AD=E6=98=AF?= =?UTF-8?q?=E5=90=A6=E5=9C=A8=E8=AF=B7=E6=B1=82=20update:?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../activity/checknet/CheckNetActivity.java | 2 - .../activity/checknet/CheckNetPresenter.java | 4 +- .../sn/activity/main/MainAPresenter.java | 13 +- .../sn/activity/main/MainActivity.java | 41 +++-- .../com/aoleyun/sn/base/BaseApplication.java | 20 --- .../aoleyun/sn/disklrucache/CacheHelper.java | 4 + .../gson/NullStringToEmptyAdapterFactory.java | 45 +++++ .../sn/network/NetInterfaceManager.java | 71 ++++---- .../com/aoleyun/sn/network/UrlAddress.java | 157 +++++++++++------- .../network/api/post/SendDownloadInfoApi.java | 1 + .../aoleyun/sn/receiver/NewAppReceiver.java | 5 +- .../com/aoleyun/sn/service/GuardService.java | 57 +++---- .../sn/service/main/MainSPresenter.java | 59 ++++--- .../aoleyun/sn/service/main/MainService.java | 47 +++++- .../com/aoleyun/sn/tpush/MessageReceiver.java | 20 +-- .../java/com/aoleyun/sn/utils/GsonUtils.java | 8 +- .../java/com/aoleyun/sn/utils/JGYUtils.java | 59 ++++--- .../com/aoleyun/sn/utils/SaveListUtils.java | 125 -------------- .../main/java/com/aoleyun/sn/utils/Utils.java | 1 - 20 files changed, 369 insertions(+), 374 deletions(-) create mode 100644 app/src/main/java/com/aoleyun/sn/gson/NullStringToEmptyAdapterFactory.java delete mode 100644 app/src/main/java/com/aoleyun/sn/utils/SaveListUtils.java diff --git a/app/build.gradle b/app/build.gradle index 08f3c98..cf390e0 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -61,8 +61,8 @@ android { //新平台正式 cube { flavorDimensions "default" - versionCode 31 - versionName "4.0" + versionCode 33 + versionName "4.2" /*********************************极光推送************************************/ manifestPlaceholders = [ XG_ACCESS_ID : "1500026372", diff --git a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetActivity.java b/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetActivity.java index 41dc1da..8bff995 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetActivity.java @@ -9,7 +9,6 @@ import com.aoleyun.sn.R; import com.aoleyun.sn.base.BaseActivity; import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.utils.JGYUtils; -import com.aoleyun.sn.utils.SaveListUtils; import com.aoleyun.sn.utils.SysSettingUtils; import com.aoleyun.sn.utils.ToastUtil; import com.aoleyun.sn.utils.Utils; @@ -213,7 +212,6 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma //发送设备mac地址和信息 mCheckNetPresenter.sendMACAddress(); if (loocked) { - SaveListUtils.getList(); //获取系统管控 mCheckNetPresenter.setPushTags(); } else { diff --git a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetPresenter.java b/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetPresenter.java index e919cb2..82dcbf1 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetPresenter.java +++ b/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetPresenter.java @@ -399,14 +399,14 @@ public class CheckNetPresenter implements CheckNetContact.Presenter { @Override public void getDefaultDesktop() { - if (JGYUtils.isOfficialVersion()) { - mView.getDefaultDesktopFinish(); + if (JGYUtils.isOfficialVersion() || JGYUtils.getInstance().getDeviceIsLocked()) { mNetInterfaceManager.getAppLimit(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { @Override public void onComplete() { } }); + mView.getDefaultDesktopFinish(); } else { mNetInterfaceManager.getDefaultDesktop(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { @Override diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java index 1522ea0..7f52df6 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java +++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java @@ -66,9 +66,16 @@ public class MainAPresenter implements MainAContact.Presenter { @Override public void getLockedState() { - int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); - Log.e("getLockedState", "locked: " + locked); - mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED); + NetInterfaceManager.getInstance() + .getLockedState(getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + Log.e("getLockedState", "onComplete: "); + int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); + Log.e("getLockedState", "locked: " + locked); + mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED); + } + }); } /** diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java index 787b11f..70cdeed 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java @@ -3,11 +3,14 @@ package com.aoleyun.sn.activity.main; import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.BroadcastReceiver; +import android.content.ComponentName; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.content.IntentFilter; +import android.content.ServiceConnection; import android.graphics.Bitmap; +import android.os.IBinder; import android.os.SystemClock; import android.provider.Settings; import android.text.TextUtils; @@ -30,7 +33,6 @@ import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.service.main.MainService; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SPUtils; -import com.aoleyun.sn.utils.SaveListUtils; import com.aoleyun.sn.utils.SysSettingUtils; import com.aoleyun.sn.utils.ToastUtil; import com.aoleyun.sn.utils.Utils; @@ -124,7 +126,6 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, } private MainAPresenter mMainAPresenter; - private MMKV mMMKV = MMKV.defaultMMKV(); private boolean updateApp = false; @@ -151,6 +152,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, mMainAPresenter.attachView(this); mMainAPresenter.setLifecycle(lifecycleSubject); NetworkUtils.registerNetworkStatusChangedListener(this); + registerUpdateReceiver(); JGYUtils.startServices(MainActivity.this); getDevicesInfo(); setStoreUpdateListener(bt_checkupdate); @@ -250,11 +252,29 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, @Override public void initData() { Log.e("getMacAddress", Utils.getAndroid10MAC(this)); - startService(new Intent(MainActivity.this, MainService.class)); -// registerUpdateReceiver(); + Intent intent = new Intent(MainActivity.this, MainService.class); + bindService(intent, serviceConnect, BIND_AUTO_CREATE); + startService(intent); mMainAPresenter.getLockedState(); } + MainService.MainBinder mMainBinder; + ServiceConnect serviceConnect = new ServiceConnect(); + + private class ServiceConnect implements ServiceConnection { + @Override + public void onServiceConnected(ComponentName name, IBinder service) { + Log.e(TAG, "onServiceConnected: "); + mMainBinder = (MainService.MainBinder) service; + mMainBinder.getService().getLockedState(); + } + + @Override + public void onServiceDisconnected(ComponentName name) { + Log.e(TAG, "onServiceDisconnected: "); + } + } + /** * @param loocked 后台1是锁定,底层0是锁定 */ @@ -264,7 +284,6 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, if (loocked) { iv_locked.setVisibility(View.VISIBLE); iv_locked.setImageDrawable(getDrawable(R.drawable.locked)); - SaveListUtils.getList(); mMainAPresenter.getStudesInfo(false); } else { iv_locked.setVisibility(View.VISIBLE); @@ -411,12 +430,12 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, @Override protected void onDestroy() { super.onDestroy(); - JGYUtils.startServices(MainActivity.this); - NetworkUtils.unregisterNetworkStatusChangedListener(this); - mMainAPresenter.detachView(); if (mUpdateReceiver != null) { unregisterReceiver(mUpdateReceiver); } + JGYUtils.startServices(MainActivity.this); + NetworkUtils.unregisterNetworkStatusChangedListener(this); + mMainAPresenter.detachView(); } @Override @@ -444,9 +463,10 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, private void registerUpdateReceiver() { if (mUpdateReceiver == null) { mUpdateReceiver = new UpdateReceiver(); - IntentFilter filter = new IntentFilter(); - filter.addAction(UPDATE_LOCKED_STATUS); } + IntentFilter filter = new IntentFilter(); + filter.addAction(UPDATE_LOCKED_STATUS); + registerReceiver(mUpdateReceiver, filter); } class UpdateReceiver extends BroadcastReceiver { @@ -457,7 +477,6 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, if (locked == JGYActions.FRAME_CODE_LOCKED) { iv_locked.setVisibility(View.VISIBLE); iv_locked.setImageDrawable(getDrawable(R.drawable.locked)); - SaveListUtils.getList(); } else { iv_locked.setVisibility(View.VISIBLE); iv_locked.setImageDrawable(getDrawable(R.drawable.unlock)); diff --git a/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java b/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java index 76f5906..1e45bdf 100644 --- a/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java +++ b/app/src/main/java/com/aoleyun/sn/base/BaseApplication.java @@ -551,24 +551,4 @@ public class BaseApplication extends MultiDexApplication { } } - - boolean isForecDownload = false; - - public boolean isDownloading() { - return isForecDownload; - } - - public void setDownloadState(boolean state) { - isForecDownload = state; - } - - public void checkIsDownloading() { - List list = Aria.download(this).getDRunningTask(); - if (list == null || list.size() == 0) { - BaseApplication.getInstance().setDownloadState(false); - } else { - BaseApplication.getInstance().setDownloadState(true); - } - Log.e(TAG, "isDownloading=" + BaseApplication.getInstance().isDownloading()); - } } diff --git a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java index 2fd11d1..d81dfe3 100644 --- a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java +++ b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java @@ -7,6 +7,7 @@ import android.os.Environment; import android.util.Log; import com.jakewharton.disklrucache.DiskLruCache; +import com.tencent.mmkv.BuildConfig; import com.tencent.mmkv.MMKV; import org.json.JSONArray; @@ -151,6 +152,9 @@ public class CacheHelper { while ((len = inputStream.read(buf)) != -1) { sb.append(new String(buf, 0, len)); } + if (BuildConfig.DEBUG) { + Log.e(TAG, "getAsString: " + sb.toString()); + } return sb.toString(); diff --git a/app/src/main/java/com/aoleyun/sn/gson/NullStringToEmptyAdapterFactory.java b/app/src/main/java/com/aoleyun/sn/gson/NullStringToEmptyAdapterFactory.java new file mode 100644 index 0000000..5c65c40 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/gson/NullStringToEmptyAdapterFactory.java @@ -0,0 +1,45 @@ +package com.aoleyun.sn.gson; + +import com.google.gson.Gson; +import com.google.gson.TypeAdapter; +import com.google.gson.TypeAdapterFactory; +import com.google.gson.reflect.TypeToken; +import com.google.gson.stream.JsonReader; +import com.google.gson.stream.JsonToken; +import com.google.gson.stream.JsonWriter; + +import java.io.IOException; + +public class NullStringToEmptyAdapterFactory implements TypeAdapterFactory { + @Override + public TypeAdapter create(Gson gson, TypeToken type) { + + Class rawType = (Class) type.getRawType(); + if (rawType != String.class) { + return null; + } + return (TypeAdapter) new StringAdapter(); + } + + public static class StringAdapter extends TypeAdapter { + @Override + public String read(JsonReader reader) throws IOException { + if (reader.peek() == JsonToken.NULL) { + reader.nextNull(); + return ""; + } + return reader.nextString(); + } + + @Override + public void write(JsonWriter writer, String value) throws IOException { + if (value == null) { + writer.nullValue(); + return; + } + writer.value(value); + } + } + +} + diff --git a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java index d9ba9a0..921512e 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -42,6 +42,7 @@ import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.comm.PackageNames; import com.aoleyun.sn.disklrucache.CacheHelper; +import com.aoleyun.sn.gson.NullStringToEmptyAdapterFactory; import com.aoleyun.sn.manager.ConnectManager; import com.aoleyun.sn.manager.ConnectMode; import com.aoleyun.sn.network.api.get.CheckTestUpdateApi; @@ -102,6 +103,7 @@ import com.aoleyun.sn.utils.Utils; import com.aoleyun.sn.utils.WiFiUtils; import com.arialyy.aria.core.Aria; import com.google.gson.Gson; +import com.google.gson.GsonBuilder; import com.google.gson.JsonObject; import com.google.gson.JsonParser; import com.google.gson.reflect.TypeToken; @@ -727,7 +729,9 @@ public class NetInterfaceManager { Type listType = new TypeToken>() { }.getType(); List APPlist = gson.fromJson(jsonString, listType); - JGYUtils.getInstance().installTestAPK(APPlist); + if (APPlist != null) { + JGYUtils.getInstance().installTestAPK(APPlist); + } callback.onComplete(); } } @@ -769,7 +773,6 @@ public class NetInterfaceManager { }); } - public void getForceDownload(boolean refresh, BehaviorSubject lifecycle, onCompleteCallback callback) { ConnectMode connectMode = ConnectMode.ONE_HOUR; if (refresh) { @@ -786,8 +789,10 @@ public class NetInterfaceManager { Gson gson = new Gson(); Type listType = new TypeToken>() { }.getType(); - List APPlist = gson.fromJson(jsonString, listType); - JGYUtils.getInstance().installTestAPK(APPlist); + List forceDownloadDataList = gson.fromJson(jsonString, listType); + if (forceDownloadDataList != null) { + JGYUtils.getInstance().forceDownload(forceDownloadDataList); + } callback.onComplete(); } } @@ -818,18 +823,13 @@ public class NetInterfaceManager { @Override public void onNext(@NonNull BaseResponse> forceDownloadBean) { - Log.e("getForceDownload", "onNext: "); + Log.e("getForceDownload", "onNext: " + forceDownloadBean); if (forceDownloadBean.code == OK) { cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST); - Log.e("getForceDownload", "isDownloading =" + BaseApplication.getInstance().isDownloading()); List forceDownloadData = forceDownloadBean.data; cacheHelper.put(UrlAddress.GET_FORCE_INSTALL_LIST, GsonUtils.toJsonString(forceDownloadData)); - BaseApplication.getInstance().checkIsDownloading(); - if (!BaseApplication.getInstance().isDownloading()) { - JGYUtils.getInstance().forceDownload(forceDownloadData); - } else { - Aria.download(this).resumeAllTask(); - } + Aria.download(this).resumeAllTask(); + JGYUtils.getInstance().forceDownload(forceDownloadData); } else if (forceDownloadBean.code == -200) { cacheHelper.put(UrlAddress.GET_FORCE_INSTALL_LIST, ""); boolean qch_force_app = Settings.System.putString(mContext.getContentResolver(), "qch_force_app", "invalid"); @@ -1143,19 +1143,21 @@ public class NetInterfaceManager { }.getType(); List list = gson.fromJson(jsonString, type); PackageManager pm = mContext.getPackageManager(); - for (String pack : list) { - try { - // TODO: 2021/5/24 需要后端替换包名,暂时解决方案 - if ("com.mediatek.camera".equals(pack)) { - pm.setApplicationEnabledSetting("com.android.camera2", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + if (list != null) { + for (String pack : list) { + try { + // TODO: 2021/5/24 需要后端替换包名,暂时解决方案 + if ("com.mediatek.camera".equals(pack)) { + pm.setApplicationEnabledSetting("com.android.camera2", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + } + if ("com.android.mms".equals(pack)) { + pm.setApplicationEnabledSetting("com.android.messaging", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + } + pm.setApplicationEnabledSetting(pack, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); + Log.e("getDesktopIcon", pack); + } catch (Exception e) { + Log.e("getDesktopIcon", "Exception: " + e.getMessage()); } - if ("com.android.mms".equals(pack)) { - pm.setApplicationEnabledSetting("com.android.messaging", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); - } - pm.setApplicationEnabledSetting(pack, PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); - Log.e("getDesktopIcon", pack); - } catch (Exception e) { - Log.e("getDesktopIcon", "Exception: " + e.getMessage()); } } callback.onComplete(); @@ -1255,7 +1257,9 @@ public class NetInterfaceManager { Type type = new TypeToken() { }.getType(); NetAndLaunchBean netAndLaunchBean = gson.fromJson(jsonString, type); - JGYUtils.getInstance().setNetAndlaunch(netAndLaunchBean); + if (netAndLaunchBean != null) { + JGYUtils.getInstance().setNetAndlaunch(netAndLaunchBean); + } callback.onComplete(); } } @@ -1657,6 +1661,13 @@ public class NetInterfaceManager { }); } + + /** + * 获取设备锁定状态 + * 不需要缓存 + * @param lifecycle + * @param callback + */ public void getLockedState(BehaviorSubject lifecycle, onCompleteCallback callback) { getDevicesLockedStateObservable() .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY)) @@ -2286,8 +2297,8 @@ public class NetInterfaceManager { } public void getScreenLockState(boolean refresh, BehaviorSubject lifecycle, ScreenLockStateListener listener) { - int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 0); - if (JGYUtils.isOfficialVersion() || locked == 1) { + int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); + if (JGYUtils.isOfficialVersion() || locked == JGYActions.FRAME_CODE_UNLOCKED) { listener.setScreenLockState(false, ""); return; } @@ -2302,7 +2313,7 @@ public class NetInterfaceManager { if (jsonString == null) { getScreenLock(lifecycle, listener); } else { - Gson gson = new Gson(); + Gson gson = new GsonBuilder().registerTypeAdapterFactory(new NullStringToEmptyAdapterFactory()).create(); Type Type = new TypeToken() { }.getType(); ScreenLockState screenLockState = gson.fromJson(jsonString, Type); @@ -2513,10 +2524,10 @@ public class NetInterfaceManager { if (refresh) { connectMode = ConnectMode.ONE_HOUR; } - if (ConnectManager.getInstance().isNeedConnect(UrlAddress.GET_LOCK_SCREEN_STATE, connectMode)) { + if (ConnectManager.getInstance().isNeedConnect(UrlAddress.GET_SN_TIME_CONTROL, connectMode)) { getSnTimeControl(lifecycle, callback); } else { - String jsonString = cacheHelper.getAsString(UrlAddress.GET_LOCK_SCREEN_STATE); + String jsonString = cacheHelper.getAsString(UrlAddress.GET_SN_TIME_CONTROL); if (jsonString == null) { getSnTimeControl(lifecycle, callback); } else { diff --git a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java index 3a94a60..96106c7 100644 --- a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java +++ b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java @@ -4,78 +4,110 @@ package com.aoleyun.sn.network; * @author Administrator */ public class UrlAddress { - /*app下载完成发送下载次数*/ - public static final String SEND_DOWNLOAD_FILE_INFO = "app/downloadApp"; - /*获取系统默认程序*/ - public static final String GET_DEFAULT_APP = "app/getDefaultApp"; - /*下载接口 根据包名匹配 请求后更新下载次数*/ - public static final String SEND_DOWNLOAD_TIMES = "count/index"; - /*获取设备锁定状态*/ - public static final String GET_DEVICES_LOCKED = "lock/index"; - /*获取批次*/ - public static final String GET_BATCH = "log/getBatch"; - /*上传锁屏状态*/ - public static final String GET_LOCK_STATE = "Application/getLockState"; - /*APPID管控*/ - public static final String GET_APPID = "application/index"; - /*获取系统设置*/ - public static final String GET_FIRMWARE = "firmware/get"; - /*上传安装的应用信息*/ - public static final String UPLOAD_APPINFO = "log/index"; - /*发送设备信息*/ - public static final String SEND_DEVICES = "Mac/getMac"; - /*发送app使用情况*/ - public static final String GET_APP_LOG = "Applog/getAppLog"; + /** + * 应用策略相关 + */ + /*更新接口*/ public static final String CHECK_UPDATE = "Silent/silent"; - /*获取设备标签*/ - public static final String GET_DEVICES_TAGS = "Sn/getSnTag"; - /*浏览器书签主页设置*/ - public static final String SET_HOMEPAG_TAG = "Label"; - /*浏览器黑白名单地址*/ - public static final String SET_BROWSER_LIST = "browser"; - /*app内部网页管控*/ - public static final String SET_APPINSIDEWEB = "Appground"; - /*强制安装应用*/ - public static final String GET_FORCE_INSTALL_LIST = "forceinstall/index"; - /*应用白名单*/ - public static final String SET_WHITE_PACKAGE_LIST = "firmware/index"; - /*获取隐藏桌面图标*/ - public static final String GET_HIDE_DESKTOPICON = "Icon"; - /*获取应用升级自启*/ - public static final String NET_AND_LAUNCH_API = "automatic/get"; - /*通过sn获取信息*/ - public static final String GET_STUDENTS_INFO = "Sn/getStudent"; - /*上传截图*/ - public static final String SEND_SCREENSHOT = "Screenshot/addImg"; - /*上传我的设备*/ - public static final String UPDATE_DEVICEINFO = "Mac/getInfo"; - /*获取霸屏状态*/ - public static final String GET_LOCK_SCREEN_STATE = "Sn/getSnScreen"; - /*获取默认桌面升级*/ - public static final String GET_DESKTOP = "Sn/getSnDesktop"; - /*获取时间管控*/ - public static final String GET_SN_TIME_CONTROL = "Sn/getSnTimeControl"; - /*获取顶部app管控*/ - public static final String GET_TOP_APP_CONTROL = "Sn/getSnAppControl"; /*获取测试app*/ public static final String GET_SN_APP_TEST = "Sn/getSnAppTest"; - /*开机动画*/ - public static final String GET_LOGO_IMG = "Sn/getLogoImg"; - /*开发人员选项开关*/ - public static final String GET_DEVELOPER = "Sn/getDeveloper"; - /*通过固件名获取内置应用*/ - public static final String GET_ROM_APP = "And/getFirmwareApp"; + /*应用白名单*/ + public static final String SET_WHITE_PACKAGE_LIST = "firmware/index"; /*获取全部应用*/ public static final String GET_ALL_APP = "recommend/index"; + /*强制安装应用*/ + public static final String GET_FORCE_INSTALL_LIST = "forceinstall/index"; + /*通过固件名获取内置应用*/ + public static final String GET_ROM_APP = "And/getFirmwareApp"; + /*获取应用升级自启*/ + public static final String NET_AND_LAUNCH_API = "automatic/get"; + /*获取顶部app管控*/ + public static final String GET_TOP_APP_CONTROL = "Sn/getSnAppControl"; + /*APPID管控*/ + public static final String GET_APPID = "application/index"; + /*app内部网页管控*/ + public static final String SET_APPINSIDEWEB = "Appground"; + + /*app下载完成发送下载次数*/ + @Deprecated + public static final String SEND_DOWNLOAD_FILE_INFO = "app/downloadApp"; + /*下载接口 根据包名匹配 请求后更新下载次数*/ + public static final String SEND_DOWNLOAD_TIMES = "count/index"; + + /** + * 设备相关 + */ + + /*获取设备锁定状态*/ + public static final String GET_DEVICES_LOCKED = "lock/index"; + /*获取设备标签*/ + public static final String GET_DEVICES_TAGS = "Sn/getSnTag"; + /*获取批次*/ + public static final String GET_BATCH = "log/getBatch"; + + /*上传安装的应用信息*/ + public static final String UPLOAD_APPINFO = "log/index"; + /*通过sn获取信息*/ + public static final String GET_STUDENTS_INFO = "Sn/getStudent"; + /*发送设备信息*/ + public static final String SEND_DEVICES = "Mac/getMac"; + /*上传我的设备*/ + public static final String UPDATE_DEVICEINFO = "Mac/getInfo"; + /*发送app使用情况*/ + public static final String GET_APP_LOG = "Applog/getAppLog"; /*获取电子书包激活码*/ public static final String GET_EBAG_CODE = "And/getEbagCode"; /*恢复出厂设置次数*/ public static final String SEND_RESTORE_TIMES = "And/restore"; - /*获取远程关机时间*/ - public static final String GET_POWEROFF_TIME = "And/getTimedShutdown"; + /*上传截图*/ + public static final String SEND_SCREENSHOT = "Screenshot/addImg"; + /*上传锁屏状态*/ + public static final String GET_LOCK_STATE = "Application/getLockState"; + /*获取霸屏状态*/ + public static final String GET_LOCK_SCREEN_STATE = "Sn/getSnScreen"; + + /** + * 系统策略相关 + */ + + /*获取隐藏桌面图标*/ + public static final String GET_HIDE_DESKTOPICON = "Icon"; + /*获取系统设置*/ + public static final String GET_FIRMWARE = "firmware/get"; + /*获取时间管控*/ + public static final String GET_SN_TIME_CONTROL = "Sn/getSnTimeControl"; /*获取WiFi名和密码*/ public static final String GET_WIFI_ALIAS_PW = "And/SnControl/getWifi"; + /*获取远程关机时间*/ + public static final String GET_POWEROFF_TIME = "And/getTimedShutdown"; + + /** + * 浏览器策略 + */ + + /*浏览器书签主页设置*/ + public static final String SET_HOMEPAG_TAG = "Label"; + /*浏览器黑白名单地址*/ + public static final String SET_BROWSER_LIST = "browser"; + + /** + * 系统定制 + */ + + /*开机动画*/ + public static final String GET_LOGO_IMG = "Sn/getLogoImg"; + /*获取默认桌面升级*/ + public static final String GET_DESKTOP = "Sn/getSnDesktop"; + /*获取系统默认程序*/ + public static final String GET_DEFAULT_APP = "app/getDefaultApp"; + + /** + * 开发人员调试 + */ + + /*开发人员选项开关*/ + public static final String GET_DEVELOPER = "Sn/getDeveloper"; /*获取log任务*/ public static final String GET_LOG_ORDER = "And/getSnRunLog"; /*上传log文件*/ @@ -86,13 +118,10 @@ public class UrlAddress { /*获取公网IP*/ public static final String SHOUHU_CITYJSON = "http://pv.sohu.com/cityjson/"; + /*删除alias*/ public static final String DELETE_JPUSH_ALIAS = "https://device.jpush.cn/v3/aliases/"; /*删除tags*/ public static final String DELETE_JPUSH_TAG = "https://device.jpush.cn/v3/tags/"; - - @Deprecated - /*删除Aliases*/ - public static final String DELETE_GEDEVICE_ALIAS = "Sn/deleteAliases"; } diff --git a/app/src/main/java/com/aoleyun/sn/network/api/post/SendDownloadInfoApi.java b/app/src/main/java/com/aoleyun/sn/network/api/post/SendDownloadInfoApi.java index 24d6fd8..992b8db 100644 --- a/app/src/main/java/com/aoleyun/sn/network/api/post/SendDownloadInfoApi.java +++ b/app/src/main/java/com/aoleyun/sn/network/api/post/SendDownloadInfoApi.java @@ -8,6 +8,7 @@ import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; import retrofit2.http.POST; +@Deprecated public interface SendDownloadInfoApi { @FormUrlEncoded @POST(UrlAddress.SEND_DOWNLOAD_FILE_INFO) diff --git a/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java b/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java index ae84677..233faaa 100644 --- a/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java +++ b/app/src/main/java/com/aoleyun/sn/receiver/NewAppReceiver.java @@ -13,10 +13,8 @@ import com.aoleyun.sn.bean.BaseResponse; import com.aoleyun.sn.comm.PackageNames; import com.aoleyun.sn.network.NetInterfaceManager; import com.aoleyun.sn.utils.ApkUtils; -import com.aoleyun.sn.utils.CacheUtils; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SPUtils; -import com.aoleyun.sn.utils.SaveListUtils; import java.util.concurrent.TimeUnit; @@ -65,12 +63,14 @@ public class NewAppReceiver extends BroadcastReceiver { break; } Log.e(TAG, "sendAppInfo: " + state + packageName); + JGYUtils.getInstance().checkForceDownload(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (!PackageNames.APPSTORE.equals(packageName) || !PackageNames.DEVICE_INFO.equals(packageName)) { ApkUtils.addShortcut(context); ApkUtils.RemoveTask(context, packageName); } JGYUtils.getInstance().wakeUpAppstore(); + //启动教官壹 } newAppListener.setNewAppListener(packageName); @@ -95,7 +95,6 @@ public class NewAppReceiver extends BroadcastReceiver { @Override public void onNext(@NonNull String s) { Log.e(TAG, "sendAppInfo: onNext: " + s); - SaveListUtils.getDownLoadList().remove(s); NetInterfaceManager.getInstance().sendInstalledAppInfo(new NetInterfaceManager.onCompleteCallback() { @Override public void onComplete() { diff --git a/app/src/main/java/com/aoleyun/sn/service/GuardService.java b/app/src/main/java/com/aoleyun/sn/service/GuardService.java index 2a606c1..ffa5985 100644 --- a/app/src/main/java/com/aoleyun/sn/service/GuardService.java +++ b/app/src/main/java/com/aoleyun/sn/service/GuardService.java @@ -491,11 +491,6 @@ public class GuardService extends Service { Log.e(TAG, "taskComplete: " + filepath); } else if (filepath.endsWith(".apk")) { new Thread(() -> ApkUtils.installApp(GuardService.this, filepath)).start(); - List list = Aria.download(this).getDRunningTask(); - if (list == null || list.size() == 0) { - BaseApplication.getInstance().setDownloadState(false); - Log.e("taskComplete", "isDownloading=" + BaseApplication.getInstance().isDownloading()); - } } NetInterfaceManager.getInstance() .getSendTimesApi() @@ -525,32 +520,32 @@ public class GuardService extends Service { }); int userId = (int) SPUtils.get(GuardService.this, CommonConfig.ADMIN_ID, 0); long appSize = task.getFileSize(); - NetInterfaceManager.getInstance() - .getSendInfoApi() - .sendDownloadTimes(NetInterfaceManager.HTTP_KEY, Utils.getSerial(), userId, app_package, appSize) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Observer() { - @Override - public void onSubscribe(Disposable d) { - Log.e("SEND_DOWNLOAD_FILE_INFO", "onSubscribe: "); - } - - @Override - public void onNext(BaseResponse baseResponse) { - Log.e("SEND_DOWNLOAD_FILE_INFO", "onNext: " + baseResponse.msg); - } - - @Override - public void onError(Throwable e) { - Log.e("SEND_DOWNLOAD_FILE_INFO", "onError: " + e.getMessage()); - } - - @Override - public void onComplete() { - Log.e("SEND_DOWNLOAD_FILE_INFO", "onComplete: "); - } - }); +// NetInterfaceManager.getInstance() +// .getSendInfoApi() +// .sendDownloadTimes(NetInterfaceManager.HTTP_KEY, Utils.getSerial(), userId, app_package, appSize) +// .subscribeOn(Schedulers.io()) +// .observeOn(AndroidSchedulers.mainThread()) +// .subscribe(new Observer() { +// @Override +// public void onSubscribe(Disposable d) { +// Log.e("SEND_DOWNLOAD_FILE_INFO", "onSubscribe: "); +// } +// +// @Override +// public void onNext(BaseResponse baseResponse) { +// Log.e("SEND_DOWNLOAD_FILE_INFO", "onNext: " + baseResponse.msg); +// } +// +// @Override +// public void onError(Throwable e) { +// Log.e("SEND_DOWNLOAD_FILE_INFO", "onError: " + e.getMessage()); +// } +// +// @Override +// public void onComplete() { +// Log.e("SEND_DOWNLOAD_FILE_INFO", "onComplete: "); +// } +// }); } else if (filepath.endsWith(".zip")) { Log.e("taskComplete", "下载完成:" + task.getPercent() + ":" + task.getExtendField()); JGYUtils.getInstance().setBootanimation(task.getFilePath()); diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java index 0d66826..a332103 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java @@ -62,12 +62,26 @@ public class MainSPresenter implements MainSContact.Presenter { this.mView = null; } + private boolean requesting = false; + + public boolean isRequesting() { + return requesting; + } + + public void setRequesting(boolean requesting) { + this.requesting = requesting; + } + + public long responseTime; + /** * 1 */ @Override public void getLockedState(String key) { Log.e(TAG, "getLockedState: " + key); + requesting = true; + responseTime = System.currentTimeMillis(); NetInterfaceManager.getInstance() .getLockedState(getLifecycle(), new NetInterfaceManager.onCompleteCallback() { @Override @@ -154,7 +168,6 @@ public class MainSPresenter implements MainSContact.Presenter { public void updateDeviceInfo() { if (JGYUtils.isOfficialVersion()) { mView.updateDeviceInfoFinish(); - return; } NetInterfaceManager.getInstance().updateDeviceInfo(new NetInterfaceManager.onCompleteCallback() { @Override @@ -229,32 +242,32 @@ public class MainSPresenter implements MainSContact.Presenter { @Override public void getDefaultDesktop() { - if (JGYUtils.isOfficialVersion()) { + if (JGYUtils.isOfficialVersion() || JGYUtils.getInstance().getDeviceIsLocked()) { mView.getDefaultDesktopFinish(); - return; + } else { + NetInterfaceManager.getInstance() + .getDefaultDesktop(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + mView.getDefaultDesktopFinish(); + } + }); } - NetInterfaceManager.getInstance() - .getDefaultDesktop(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getDefaultDesktopFinish(); - } - }); } @Override public void setLogoImg() { if (JGYUtils.isOfficialVersion()) { mView.setLogoImgFinish(); - return; + } else { + NetInterfaceManager.getInstance() + .setLogoImg(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + mView.setLogoImgFinish(); + } + }); } - NetInterfaceManager.getInstance() - .setLogoImg(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setLogoImgFinish(); - } - }); } @@ -308,11 +321,11 @@ public class MainSPresenter implements MainSContact.Presenter { public void getBrowserBookmarks() { NetInterfaceManager.getInstance() .getBookMarkBlackWhiteList(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getBrowserBookmarksFinish(); - } - }); + @Override + public void onComplete() { + mView.getBrowserBookmarksFinish(); + } + }); } @Override diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java index f2b91ac..ccc6d6a 100644 --- a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java +++ b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java @@ -17,10 +17,12 @@ import android.net.NetworkInfo; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; import android.os.AsyncTask; +import android.os.Binder; import android.os.Build; import android.os.Debug; import android.os.Handler; import android.os.IBinder; +import android.os.SystemClock; import android.provider.Settings; import android.text.TextUtils; import android.util.DisplayMetrics; @@ -54,7 +56,6 @@ import com.aoleyun.sn.utils.CacheUtils; import com.aoleyun.sn.utils.ForegroundAppUtil; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SPUtils; -import com.aoleyun.sn.utils.SaveListUtils; import com.aoleyun.sn.utils.SysSettingUtils; import com.aoleyun.sn.utils.TimeUtils; import com.aoleyun.sn.utils.ToastUtil; @@ -317,7 +318,24 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public IBinder onBind(Intent intent) { - return null; + return mMainBinder; + } + + public MainBinder mMainBinder = new MainBinder(); + + public class MainBinder extends Binder { + public MainService getService() { + return MainService.this; + } + } + + public void getLockedState() { + Log.e(TAG, "getLockedState: MainBinder"); + if (!mPresenter.isRequesting()) { + mPresenter.getLockedState("MainBinder"); + } else { + Log.e(TAG, "getLockedState: MainSPresenter is requesting now"); + } } @Override @@ -333,8 +351,10 @@ public class MainService extends Service implements MainSContact.MainView, Netwo task.execute("ntp.aliyun.com"); //根据要求卸载这两个应用 - ApkUtils.UninstallAPP(this, "com.joytv.live"); - ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader"); + if (!JGYUtils.getInstance().getDeviceIsLocked()) { + ApkUtils.UninstallAPP(this, "com.joytv.live"); + ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader"); + } try { getPackageManager().setApplicationEnabledSetting("com.android.email", PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0); @@ -375,8 +395,8 @@ public class MainService extends Service implements MainSContact.MainView, Netwo timeChangedStart.onstar(System.currentTimeMillis()); setStatusbar(); setFloatingWindow(this); + notificationManager = NotificationManagerCompat.from(this); createNotificationChannel(); - sendSimpleNotification(); } @Override @@ -430,6 +450,9 @@ public class MainService extends Service implements MainSContact.MainView, Netwo } } + private NotificationManagerCompat notificationManager; + private int NotificationID = 1; + private void sendSimpleNotification() { NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "CHANNEL_ID") .setSmallIcon(R.mipmap.ic_launcher) @@ -439,10 +462,8 @@ public class MainService extends Service implements MainSContact.MainView, Netwo .setShowWhen(false) .setOngoing(true) .setPriority(NotificationCompat.PRIORITY_MAX); - NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this); // notificationId is a unique int for each notification that you must define - notificationManager.notify(1, builder.build()); - + notificationManager.notify(NotificationID, builder.build()); } private void addShortcut() { @@ -814,13 +835,17 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public void setLockedState(boolean loocked) { + Log.e(TAG, "setLockedState: " + loocked); if (loocked) { ToastUtil.betaShow("设备已上锁"); + sendSimpleNotification(); mPresenter.setPushTags(); mPresenter.getDeveloper(); - SaveListUtils.getList(); + ApkUtils.UninstallAPP(this, "com.joytv.live"); + ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader"); } else { ToastUtil.betaShow("设备已解锁"); + notificationManager.cancel(NotificationID); SysSettingUtils.setEnableSetting(this); mPresenter.checkAoleyunUpdate(); } @@ -911,7 +936,9 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public void setLogoImgFinish() { + mPresenter.setRequesting(false); Log.e(TAG, "setLogoImgFinish: "); + Log.e(TAG, "SettingFinish: " + (System.currentTimeMillis() - mPresenter.responseTime) + " ms"); } @Override @@ -996,7 +1023,9 @@ public class MainService extends Service implements MainSContact.MainView, Netwo @Override public void setWiFiPasswd() { + mPresenter.setRequesting(false); Log.e(TAG, "setWiFiPasswd: "); + Log.e(TAG, "SettingFinish: " + (System.currentTimeMillis() - mPresenter.responseTime) + " ms"); } @Override diff --git a/app/src/main/java/com/aoleyun/sn/tpush/MessageReceiver.java b/app/src/main/java/com/aoleyun/sn/tpush/MessageReceiver.java index 4f1c699..b65c1d0 100644 --- a/app/src/main/java/com/aoleyun/sn/tpush/MessageReceiver.java +++ b/app/src/main/java/com/aoleyun/sn/tpush/MessageReceiver.java @@ -27,6 +27,7 @@ import com.aoleyun.sn.R; import com.aoleyun.sn.base.BaseApplication; import com.aoleyun.sn.bean.BaseResponse; import com.aoleyun.sn.bean.RemoteDebug; +import com.aoleyun.sn.bean.ScreenLockState; import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.disklrucache.CacheHelper; @@ -40,10 +41,10 @@ import com.aoleyun.sn.utils.ApkUtils; import com.aoleyun.sn.utils.CacheUtils; import com.aoleyun.sn.utils.CmdUtil; import com.aoleyun.sn.utils.ForegroundAppUtil; +import com.aoleyun.sn.utils.GsonUtils; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.MySQLData; import com.aoleyun.sn.utils.SPUtils; -import com.aoleyun.sn.utils.SaveListUtils; import com.aoleyun.sn.utils.ServiceAliveUtils; import com.aoleyun.sn.utils.ToastUtil; import com.aoleyun.sn.utils.Utils; @@ -457,10 +458,6 @@ public class MessageReceiver extends XGPushBaseReceiver { JSONObject jsonObject = JSON.parseObject(extras); String pkg = jsonObject.getString("package_name"); if (TextUtils.isEmpty(pkg)) return; - if (SaveListUtils.getlist().contains(pkg)) { - SaveListUtils.getlist().remove(pkg); - } - SaveListUtils.sendForceAPP(mContext); ApkUtils.UninstallAPP(mContext, pkg); } NetInterfaceManager.getInstance().getNetAndLaunchSetting(); @@ -489,7 +486,9 @@ public class MessageReceiver extends XGPushBaseReceiver { break; case MSG_RESET: ToastUtil.betaShow("收到管控:设备重置"); + JGYUtils.getInstance().cleanAoleLauncher3Cache(); Utils.doMasterClear(mContext); + MainService.mPresenter.getLockedState("MSG_PUSH_RESET"); break; case MSG_INSTALL: ToastUtil.betaShow("收到管控:应用安装"); @@ -728,6 +727,10 @@ public class MessageReceiver extends XGPushBaseReceiver { if (ServiceAliveUtils.isServiceAlive(mContext)) { mContext.startService(new Intent(mContext, MainService.class)); } + ScreenLockState screenLockState = new ScreenLockState(); + screenLockState.setIs_screen_lock(state); + screenLockState.setName(name); + cacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJsonString(screenLockState)); Intent intent = new Intent(); intent.putExtra("name", name); if (state == 1) { @@ -761,8 +764,6 @@ public class MessageReceiver extends XGPushBaseReceiver { packageObj.put("MD5", MD5); Log.e(TAG, "doDownloadAndInstall: app_package:" + app_package); Log.e(TAG, "doDownloadAndInstall: app_url:" + app_url); - SaveListUtils.addList(app_package); - SaveListUtils.sendForceAPP(mContext); PackageInfo packageInfo = null; try { packageInfo = mPackageManager.getPackageInfo(app_package, 0); @@ -771,10 +772,7 @@ public class MessageReceiver extends XGPushBaseReceiver { } if (packageInfo == null) { Log.e(TAG, "doDownloadAndInstall: " + app_package + "未安装"); - if (!SaveListUtils.isDownLoading(app_url)) { - Log.e(TAG, "doDownloadAndInstall: " + app_package + "开始下载"); Utils.ariaDownload(mContext, app_url, packageObj); - } } else { long appVersionCode; if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { @@ -783,9 +781,7 @@ public class MessageReceiver extends XGPushBaseReceiver { appVersionCode = packageInfo.versionCode; } if (app_version_code > appVersionCode) { - if (!SaveListUtils.isDownLoading(app_url)) { Utils.ariaDownload(mContext, app_url, packageObj); - } } else { Log.e(TAG, "doDownloadAndInstall: " + app_package + "已安装最新版"); } diff --git a/app/src/main/java/com/aoleyun/sn/utils/GsonUtils.java b/app/src/main/java/com/aoleyun/sn/utils/GsonUtils.java index e1864b2..5783ef5 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/GsonUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/GsonUtils.java @@ -16,12 +16,10 @@ public class GsonUtils { } // TODO: 2022/3/31 暂时没有实现 - public static E getJsonFromType(String jsonString) { + public static T getJsonFromType(String jsonString, Class clazz) { Gson gson = new Gson(); - Type Type = new TypeToken() { - }.getType(); - E e = gson.fromJson(jsonString, Type); - return e; + T t = (T) gson.fromJson(jsonString, clazz); + return t; } public static String toJsonString(Object o) { diff --git a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java index 2ef82e7..347bfdf 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java @@ -35,6 +35,9 @@ import com.alibaba.fastjson.JSONObject; import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; import com.aoleyun.sn.comm.PackageNames; +import com.aoleyun.sn.disklrucache.CacheHelper; +import com.aoleyun.sn.network.NetInterfaceManager; +import com.aoleyun.sn.network.UrlAddress; import com.aoleyun.sn.receiver.BootReceiver; import com.blankj.utilcode.util.FileUtils; import com.google.gson.Gson; @@ -106,6 +109,9 @@ public class JGYUtils { public static String ZhanruiTag = "展锐cube"; public static String Other = "其他"; + private CacheHelper cacheHelper; + + static { System.loadLibrary("jgy"); } @@ -115,7 +121,7 @@ public class JGYUtils { throw new RuntimeException("Context is NULL"); } this.mContext = context; - + this.cacheHelper = new CacheHelper(context); } public static void init(Context context) { @@ -173,6 +179,11 @@ public class JGYUtils { return path + File.separator; } + public boolean getDeviceIsLocked() { + int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); + return locked == JGYActions.FRAME_CODE_LOCKED; + } + public int getBatteryLevel() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { BatteryManager batteryManager = (BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE); @@ -325,8 +336,6 @@ public class JGYUtils { } } - - } @SuppressLint("NewApi") @@ -958,11 +967,26 @@ public class JGYUtils { Log.e("writeAppPackageList: ", "qch_app_forbid is :" + b + " " + Settings.System.getString(mContext.getContentResolver(), "qch_app_forbid")); } + public void checkForceDownload() { + String jsonString = cacheHelper.getAsString(UrlAddress.GET_FORCE_INSTALL_LIST); + //为 "" 是已经请求成功的 + if (jsonString == null) { + NetInterfaceManager.getInstance().getForceDownload(); + } else { + Gson gson = new Gson(); + Type listType = new TypeToken>() { + }.getType(); + List forceDownloadData = gson.fromJson(jsonString, listType); + if (forceDownloadData != null) { + JGYUtils.getInstance().forceDownload(forceDownloadData); + } + } + } + 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); @@ -1008,31 +1032,8 @@ public class JGYUtils { Utils.ariaDownload(mContext, app_url, jsonObject); } } - SaveListUtils.setList(list); - SaveListUtils.sendForceAPP(mContext); } - /** - * 获取教管壹下载,没什么用了 - * - * @param forceDownloadDataList - */ - private void getSelfDownload(List forceDownloadDataList) { - for (ForceDownloadData forceDownloadData : forceDownloadDataList) { - if (PackageNames.OLD_APPSTORE.equals(forceDownloadData.getApp_package())) { - if (!ApkUtils.isAvailable(mContext, PackageNames.OLD_APPSTORE)) { - JSONObject jsonObject = new JSONObject(); - jsonObject.put("app_name", forceDownloadData.getApp_name()); - jsonObject.put("app_package", forceDownloadData.getApp_package()); - Utils.ariaDownload(mContext, forceDownloadData.getApp_url(), jsonObject); - } - } else { -// Log.e("fht", "未上传应用"); - } - } - } - - /** * @param jsonObject 安装应用 */ @@ -1150,14 +1151,10 @@ public class JGYUtils { 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); - } } } diff --git a/app/src/main/java/com/aoleyun/sn/utils/SaveListUtils.java b/app/src/main/java/com/aoleyun/sn/utils/SaveListUtils.java deleted file mode 100644 index 7c765a4..0000000 --- a/app/src/main/java/com/aoleyun/sn/utils/SaveListUtils.java +++ /dev/null @@ -1,125 +0,0 @@ -package com.aoleyun.sn.utils; - -import android.content.Context; -import android.provider.Settings; -import android.util.Log; - -import com.aoleyun.sn.comm.CommonConfig; -import com.blankj.utilcode.util.SPStaticUtils; -import com.google.gson.Gson; -import com.google.gson.reflect.TypeToken; - -import java.lang.reflect.Type; -import java.util.ArrayList; -import java.util.List; - -public class SaveListUtils { - private static List downLoadList = new ArrayList<>(); - private static List forceList = new ArrayList<>(); - - public static List getList() { - String data = SPStaticUtils.getString(CommonConfig.FORCE_INSTALL); - Log.e("SaveListUtils", data); - Gson gson = new Gson(); - Type listType = new TypeToken>() { - }.getType(); - List list = gson.fromJson(data, listType); - if (list != null && list.size() > 0) { - Log.e("fht", "getList:" + list.toString()); - } else { - list = new ArrayList<>(); - } - return list; - } - - public static void addToList(String data) { - List list = getList(); - if (list == null) { - list = new ArrayList<>(); - } - if (!list.contains(data)) { - list.add(data); - Gson gson = new Gson(); - String gsonData = gson.toJson(list); - SPStaticUtils.put(CommonConfig.FORCE_INSTALL, gsonData); - } - Log.e("fht", "addToList:" + list.toString()); - } - - - public static void setList(List strings) { - forceList.clear(); - forceList = strings; - for (String pkg : ApkUtils.desktopAPP) { - if (!forceList.contains(pkg)) { - forceList.add(pkg); - } - } - Gson gson = new Gson(); - String gsonData = gson.toJson(forceList); - SPStaticUtils.put(CommonConfig.FORCE_INSTALL, gsonData); - Log.e("fht", "setList:" + forceList.toString()); - - } - - public static void addList(String s) { - if (!forceList.contains(s)) { - forceList.add(s); - } - Log.e("fht", "addList:" + forceList.toString()); - - } - - public static void setList() { - Gson gson = new Gson(); - String gsonData = gson.toJson(forceList); - SPStaticUtils.put(CommonConfig.FORCE_INSTALL, gsonData); - } - - - public static List getlist() { - return forceList; - } - - - public static void sendForceAPP(Context context) { - StringBuilder txtBuilder = new StringBuilder(); - for (String s : forceList) { - if (txtBuilder.length() > 0) { - txtBuilder.append(","); - } - txtBuilder.append(s); - } - String txt = txtBuilder.toString(); - if (txt.length() > 0) { - boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_force_app", txt); - Log.e("fht", "qch_force_app:" + qch_force_app + ":" + txt); - } else { - boolean qch_force_app = Settings.System.putString(context.getContentResolver(), "qch_force_app", "invalid"); - Log.e("fht", "qch_force_app:" + qch_force_app + ":" + txt); - } - setList(); - } - - public static List getDownLoadList() { - - return downLoadList; - } - - public static void addDownLoadList(String packageName) { - if (downLoadList == null) { - downLoadList = new ArrayList<>(); - downLoadList.add(packageName); - } else { - if (!downLoadList.contains(packageName)) { - downLoadList.add(packageName); - } - } - } - - public static boolean isDownLoading(String packageName) { - if (downLoadList.contains(packageName)) { - return true; - } else return false; - } -} diff --git a/app/src/main/java/com/aoleyun/sn/utils/Utils.java b/app/src/main/java/com/aoleyun/sn/utils/Utils.java index 31605b9..f7d9426 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/Utils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/Utils.java @@ -1038,7 +1038,6 @@ public class Utils { .ignoreFilePathOccupy() .setExtendField(jsonObject.toJSONString()) .create(); //启动下载} -// SaveListUtils.addDownLoadList(app_package); // } } } else {