From fce5fb52803b4c4be26ede141b64274a3603dd3c Mon Sep 17 00:00:00 2001 From: fanhuitong <981964879@qq.com> Date: Thu, 23 Jun 2022 22:32:18 +0800 Subject: [PATCH] =?UTF-8?q?version:2.3=20fix:=20add:=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E4=B8=8A=E4=BC=A0app=E4=BF=A1=E6=81=AF=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 4 +- .../com/uiui/sn/activity/SplashActivity.java | 16 ----- .../uiui/sn/activity/main/MainAPresenter.java | 32 +++++++--- .../uiui/sn/activity/main/MainActivity.java | 17 ++++- .../java/com/uiui/sn/bean/AppUploadInfo.java | 9 +++ .../main/java/com/uiui/sn/bean/SnInfo.java | 10 +++ .../java/com/uiui/sn/bean/SystemSettings.java | 54 ++++++++++++++++ .../com/uiui/sn/disklrucache/CacheHelper.java | 16 +++-- .../com/uiui/sn/manager/ControlManager.java | 45 +++++++++++-- .../uiui/sn/network/NetInterfaceManager.java | 37 +++++++++-- .../java/com/uiui/sn/network/UrlAddress.java | 64 +++++++++---------- .../interceptor/RepeatRequestInterceptor.java | 29 +++++++-- .../uiui/sn/service/main/MainSPresenter.java | 7 +- .../com/uiui/sn/tpush/MessageReceiver.java | 59 ++++++++++++----- .../main/res/layout-land/activity_main.xml | 1 - .../main/res/layout-port/activity_main.xml | 1 - 16 files changed, 301 insertions(+), 100 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 4e44607..c78ae3b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -70,8 +70,8 @@ android { productFlavors { beta { flavorDimensions "default" - versionCode 13 - versionName "2.2" + versionCode 14 + versionName "2.3" } official { diff --git a/app/src/main/java/com/uiui/sn/activity/SplashActivity.java b/app/src/main/java/com/uiui/sn/activity/SplashActivity.java index 2925d44..bf4957c 100644 --- a/app/src/main/java/com/uiui/sn/activity/SplashActivity.java +++ b/app/src/main/java/com/uiui/sn/activity/SplashActivity.java @@ -1,15 +1,12 @@ package com.uiui.sn.activity; -import android.content.Context; import android.content.Intent; -import android.media.AudioManager; import android.os.Bundle; import android.os.Handler; import android.view.WindowManager; import androidx.appcompat.app.AppCompatActivity; -import com.uiui.sn.BuildConfig; import com.uiui.sn.R; import com.uiui.sn.activity.main.MainActivity; import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; @@ -29,19 +26,6 @@ public class SplashActivity extends AppCompatActivity { startActivity(new Intent(SplashActivity.this, MainActivity.class)); finish(); }, 2000); - - if (BuildConfig.DEBUG){ - //静音 - AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); - if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) { - int ringMax = audioManager.getStreamMinVolume(AudioManager.STREAM_RING); - int musicMax = audioManager.getStreamMinVolumeInt(AudioManager.STREAM_MUSIC); - int voiceMax = audioManager.getStreamMinVolumeInt(AudioManager.STREAM_VOICE_CALL); - audioManager.setStreamVolume(AudioManager.STREAM_RING, ringMax, 0); - audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, voiceMax, 0); - audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, musicMax, 0); //音乐音量 - } - } } private void setBar() { diff --git a/app/src/main/java/com/uiui/sn/activity/main/MainAPresenter.java b/app/src/main/java/com/uiui/sn/activity/main/MainAPresenter.java index 06569e2..3f5a702 100644 --- a/app/src/main/java/com/uiui/sn/activity/main/MainAPresenter.java +++ b/app/src/main/java/com/uiui/sn/activity/main/MainAPresenter.java @@ -6,17 +6,23 @@ import android.util.Log; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; import com.trello.rxlifecycle4.RxLifecycle; import com.trello.rxlifecycle4.android.ActivityEvent; import com.uiui.sn.bean.AppInfo; import com.uiui.sn.bean.AppletQRCode; import com.uiui.sn.bean.BaseResponse; +import com.uiui.sn.bean.SnInfo; import com.uiui.sn.config.CommonConfig; +import com.uiui.sn.disklrucache.CacheHelper; import com.uiui.sn.network.NetInterfaceManager; +import com.uiui.sn.network.UrlAddress; import com.uiui.sn.utils.CXAESUtil; import com.uiui.sn.utils.JGYUtils; import com.uiui.sn.utils.Utils; +import java.lang.reflect.Type; import java.util.List; import io.reactivex.rxjava3.core.Observer; @@ -31,9 +37,11 @@ public class MainAPresenter implements MainAContact.Presenter { private MainAContact.MainView mView; private Context mContext; + private CacheHelper mCacheHelper; public MainAPresenter(Context context) { this.mContext = context; + this.mCacheHelper = new CacheHelper(context); } private BehaviorSubject lifecycle; @@ -62,7 +70,7 @@ public class MainAPresenter implements MainAContact.Presenter { .getSnInfo(true, getLifecycle(), new NetInterfaceManager.ObserverCallback() { @Override public void onSubscribe(Disposable d) { - + Log.e("getSnInfo", "onSubscribe: "); } @Override @@ -72,12 +80,18 @@ public class MainAPresenter implements MainAContact.Presenter { @Override public void onError(Throwable e) { - + Log.e("getSnInfo", "onError: " + e.getMessage()); + String jsonString = mCacheHelper.getAsString(UrlAddress.SNINFO); + Gson gson = new Gson(); + Type type = new TypeToken>() { + }.getType(); + BaseResponse userInfoBaseResponse = gson.fromJson(jsonString, type); + mView.setSnInfo(userInfoBaseResponse); } @Override public void onComplete() { - + Log.e("getSnInfo", "onComplete: "); } }); } @@ -101,7 +115,7 @@ public class MainAPresenter implements MainAContact.Presenter { @Override public void getQRCode() { String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, Utils.getSerial()); - Log.e(TAG + TAG, "setImageAndText: " + encryptString); + Log.e("getQRCode", "setImageAndText: " + encryptString); Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400); mView.setQRCode(bitmap); } @@ -119,12 +133,12 @@ public class MainAPresenter implements MainAContact.Presenter { .subscribe(new Observer>>() { @Override public void onSubscribe(Disposable d) { - Log.e(TAG + "getForceInstall", "onSubscribe: "); + Log.e("getForceInstall", "onSubscribe: "); } @Override public void onNext(BaseResponse> listBaseResponse) { - Log.e(TAG + "getForceInstall", "onNext: " + listBaseResponse); + Log.e("getForceInstall", "onNext: " + listBaseResponse); int code = listBaseResponse.code; if (code == 200) { List appInfos = listBaseResponse.data; @@ -133,19 +147,19 @@ public class MainAPresenter implements MainAContact.Presenter { } } else { boolean aole_force_app = JGYUtils.putString(mContext.getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "invalid"); - Log.e(TAG + TAG, "aole_force_app: invalid: " + aole_force_app); + Log.e("getForceInstall", "aole_force_app: invalid: " + aole_force_app); } } @Override public void onError(Throwable e) { - Log.e(TAG + "getForceInstall", "onError: " + e.getMessage()); + Log.e("getForceInstall", "onError: " + e.getMessage()); onComplete(); } @Override public void onComplete() { - Log.e(TAG + "getForceInstall", "onComplete: "); + Log.e("getForceInstall", "onComplete: "); mView.setForceInstall(); } }); diff --git a/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java b/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java index d995f1e..c4f0e0d 100644 --- a/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java +++ b/app/src/main/java/com/uiui/sn/activity/main/MainActivity.java @@ -6,6 +6,7 @@ import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.Bitmap; +import android.media.AudioManager; import android.os.AsyncTask; import android.os.SystemClock; import android.text.TextUtils; @@ -41,6 +42,7 @@ import com.uiui.sn.service.GuardService; import com.uiui.sn.service.ManagerService; import com.uiui.sn.service.StepService; import com.uiui.sn.service.main.MainService; +import com.uiui.sn.utils.ApkUtils; import com.uiui.sn.utils.JGYUtils; import com.uiui.sn.utils.SPUtils; import com.uiui.sn.utils.TimeUtils; @@ -78,7 +80,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, @BindView(R.id.iv_exit) ImageView iv_exit; - private MainAPresenter mPresenter = new MainAPresenter(this); + private MainAPresenter mPresenter ; @Override public void onDisconnected() { @@ -101,11 +103,24 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView, Utils.getAndroiodScreenProperty(this); ButterKnife.bind(this); + mPresenter = new MainAPresenter(this); mPresenter.setLifecycle(lifecycleSubject); mPresenter.attachView(this); NetworkUtils.registerNetworkStatusChangedListener(this); + if (BuildConfig.DEBUG) { + ApkUtils.openApp(this, "com.android.settings"); + //静音 + AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); + int ringMax = audioManager.getStreamMinVolumeInt(AudioManager.STREAM_RING); + audioManager.setStreamVolume(AudioManager.STREAM_RING, ringMax, 0); + int musicMax = audioManager.getStreamMinVolumeInt(AudioManager.STREAM_MUSIC); + int voiceMax = audioManager.getStreamMinVolumeInt(AudioManager.STREAM_VOICE_CALL); + audioManager.setStreamVolume(AudioManager.STREAM_VOICE_CALL, voiceMax, 0); + audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, musicMax, 0); //音乐音量 + } + setOnClickListener(); tv_customversion.setText(JGYUtils.getCustomVersion()); tv_sn.setText("SN:" + Utils.getSerial()); diff --git a/app/src/main/java/com/uiui/sn/bean/AppUploadInfo.java b/app/src/main/java/com/uiui/sn/bean/AppUploadInfo.java index 629f59f..1c915a1 100644 --- a/app/src/main/java/com/uiui/sn/bean/AppUploadInfo.java +++ b/app/src/main/java/com/uiui/sn/bean/AppUploadInfo.java @@ -10,6 +10,7 @@ public class AppUploadInfo implements Serializable { long app_version_code; long firstInstallTime; long lastUpdateTime; + long app_size; public String getApp_name() { return app_name; @@ -50,4 +51,12 @@ public class AppUploadInfo implements Serializable { public void setLastUpdateTime(long lastUpdateTime) { this.lastUpdateTime = lastUpdateTime; } + + public long getApp_size() { + return app_size; + } + + public void setApp_size(long app_size) { + this.app_size = app_size; + } } diff --git a/app/src/main/java/com/uiui/sn/bean/SnInfo.java b/app/src/main/java/com/uiui/sn/bean/SnInfo.java index 1ee8923..f577b18 100644 --- a/app/src/main/java/com/uiui/sn/bean/SnInfo.java +++ b/app/src/main/java/com/uiui/sn/bean/SnInfo.java @@ -26,6 +26,8 @@ public class SnInfo implements Serializable { String grade; String name; int admin_id; + String mobile; + /* *3 商用——企业用户 4 C端——老人用户 @@ -173,6 +175,14 @@ public class SnInfo implements Serializable { this.type_id = type_id; } + public String getMobile() { + return mobile; + } + + public void setMobile(String mobile) { + this.mobile = mobile; + } + @NonNull @Override public String toString() { diff --git a/app/src/main/java/com/uiui/sn/bean/SystemSettings.java b/app/src/main/java/com/uiui/sn/bean/SystemSettings.java index 78e585f..0251282 100644 --- a/app/src/main/java/com/uiui/sn/bean/SystemSettings.java +++ b/app/src/main/java/com/uiui/sn/bean/SystemSettings.java @@ -40,6 +40,12 @@ public class SystemSettings implements Serializable { int setting_luminance; String setting_typeface; int setting_admin_app; + int projection_screen; + int hot_point; + String desktop_app; + String browser_app; + String typewriting_app; + int is_control; public int getQch_restore() { return qch_restore; @@ -282,6 +288,54 @@ public class SystemSettings implements Serializable { this.setting_admin_app = setting_admin_app; } + public int getProjection_screen() { + return projection_screen; + } + + public void setProjection_screen(int projection_screen) { + this.projection_screen = projection_screen; + } + + public int getHot_point() { + return hot_point; + } + + public void setHot_point(int hot_point) { + this.hot_point = hot_point; + } + + public String getDesktop_app() { + return desktop_app; + } + + public void setDesktop_app(String desktop_app) { + this.desktop_app = desktop_app; + } + + public String getBrowser_app() { + return browser_app; + } + + public void setBrowser_app(String browser_app) { + this.browser_app = browser_app; + } + + public String getTypewriting_app() { + return typewriting_app; + } + + public void setTypewriting_app(String typewriting_app) { + this.typewriting_app = typewriting_app; + } + + public int getIs_control() { + return is_control; + } + + public void setIs_control(int is_control) { + this.is_control = is_control; + } + @Override public String toString() { return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString(); diff --git a/app/src/main/java/com/uiui/sn/disklrucache/CacheHelper.java b/app/src/main/java/com/uiui/sn/disklrucache/CacheHelper.java index 6146b3f..c3c1f1a 100644 --- a/app/src/main/java/com/uiui/sn/disklrucache/CacheHelper.java +++ b/app/src/main/java/com/uiui/sn/disklrucache/CacheHelper.java @@ -33,7 +33,7 @@ public class CacheHelper { private MMKV mMMKV = MMKV.defaultMMKV(); private static final String DIR_NAME = "diskCache"; - private static final int MAX_COUNT = 5 * 1024 * 1024; + private static final int MAX_COUNT = 1024 * 1024 * 1024; private static final int DEFAULT_APP_VERSION = 1; private DiskLruCache mDiskLruCache; @@ -103,8 +103,9 @@ public class CacheHelper { // ======================================= public void put(String key, String value) { - Log.e(TAG, "put: " + key); + Log.e(TAG, "put: key = " + key + " value = " + value); mMMKV.encode(key, System.currentTimeMillis()); + mMMKV.encode(key + "_mmkv", value); DiskLruCache.Editor edit = null; BufferedWriter bw = null; @@ -119,11 +120,13 @@ public class CacheHelper { edit.commit();//write CLEAN } catch (IOException e) { e.printStackTrace(); + Log.e(TAG, "put: " + e.getMessage()); try { //s edit.abort();//write REMOVE } catch (IOException e1) { e1.printStackTrace(); + Log.e(TAG, "put: " + e1.getMessage()); } } finally { try { @@ -132,6 +135,7 @@ public class CacheHelper { } } catch (IOException e) { e.printStackTrace(); + Log.e(TAG, "put: " + e.getMessage()); } } } @@ -143,7 +147,7 @@ public class CacheHelper { //write READ inputStream = get(key); if (inputStream == null) { - return null; + return mMMKV.decodeString(key + "_mmkv", null); } StringBuilder sb = new StringBuilder(); int len = 0; @@ -152,15 +156,15 @@ public class CacheHelper { sb.append(new String(buf, 0, len)); } return sb.toString(); - - } catch (IOException e) { e.printStackTrace(); + Log.e(TAG, "getAsString: " + e.getMessage()); if (inputStream != null) { try { inputStream.close(); } catch (IOException e1) { e1.printStackTrace(); + Log.e(TAG, "getAsString: " + e1.getMessage()); } } } @@ -374,6 +378,7 @@ public class CacheHelper { public void delete() throws IOException { mDiskLruCache.delete(); + mMMKV.clearAll(); } public void flush() throws IOException { @@ -417,6 +422,7 @@ public class CacheHelper { return edit; } catch (IOException e) { e.printStackTrace(); + Log.e(TAG, "editor: " + e.getMessage()); } return null; diff --git a/app/src/main/java/com/uiui/sn/manager/ControlManager.java b/app/src/main/java/com/uiui/sn/manager/ControlManager.java index ec9fc9f..3b13824 100644 --- a/app/src/main/java/com/uiui/sn/manager/ControlManager.java +++ b/app/src/main/java/com/uiui/sn/manager/ControlManager.java @@ -86,11 +86,6 @@ public class ControlManager { } } - private void setAppstoreAdmin(SystemSettings settings) { - int setting_admin_app = settings.getSetting_admin_app(); - Settings.System.putInt(mResolver, "setting_admin_app", setting_admin_app); - } - /** * 关闭所有功能 */ @@ -675,10 +670,50 @@ public class ControlManager { mContext.sendBroadcast(intent); } + private void setAppstoreAdmin(SystemSettings settings) { + int setting_admin_app = settings.getSetting_admin_app(); + Settings.System.putInt(mResolver, "setting_admin_app", setting_admin_app); + } + private void setSetting(SystemSettings settings) { int setting_volume = settings.getSetting_volume(); int setting_luminance = settings.getSetting_luminance(); String setting_typeface = settings.getSetting_typeface(); } + private void setScreenShared(SystemSettings settings) { + int projection_screen = settings.getProjection_screen(); + setScreenShared(projection_screen); + } + + private void setScreenShared(int state) { + Settings.System.putInt(mResolver, "projection_screen", state); + } + + private void setHotPoint(SystemSettings settings) { + int hot_point = settings.getHot_point(); + setScreenShared(hot_point); + } + + private void setHotPoint(int state) { + Settings.System.putInt(mResolver, "hot_point", state); + } + + private void setDefaultApp(SystemSettings settings) { + String desktop_app = settings.getDesktop_app(); + String browser_app = settings.getBrowser_app(); + String typewriting_app = settings.getTypewriting_app(); + } + + private void setIsControl(SystemSettings settings) { + int is_control = settings.getIs_control(); + setIsControl(is_control); + } + + private void setIsControl(int state) { + Settings.System.putInt(mResolver, "is_control", state); + } + + + } diff --git a/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java b/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java index 4eb34af..da8e4bc 100644 --- a/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/uiui/sn/network/NetInterfaceManager.java @@ -71,6 +71,7 @@ import com.uiui.sn.network.interceptor.RepeatRequestInterceptor; import com.uiui.sn.service.ManagerService; import com.uiui.sn.utils.ApkUtils; import com.uiui.sn.utils.AppUsedTimeUtils; +import com.uiui.sn.utils.CacheUtils; import com.uiui.sn.utils.CmdUtil; import com.uiui.sn.utils.FileUtils; import com.uiui.sn.utils.GsonUtils; @@ -499,7 +500,7 @@ public class NetInterfaceManager { public void getSnInfo(boolean refresh, BehaviorSubject lifecycle, ObserverCallback callback) { ConnectMode connectMode = ConnectMode.SIX_HOUR; if (refresh) { - connectMode = ConnectMode.ONE_HOUR; + connectMode = ConnectMode.ONE_MINUTE; } if (ConnectManager.getInstance().isNeedConnect(UrlAddress.SNINFO, connectMode)) { getSnInfo(lifecycle, callback); @@ -668,6 +669,28 @@ public class NetInterfaceManager { }); } + List showPackages = new ArrayList() {{ + this.add("com.uiui.browser"); + this.add("com.uiui.aios"); + this.add("com.uiui.os"); + this.add("com.uiui.appstore"); + this.add("com.uiui.sn"); + this.add("com.uiui.health"); + this.add("com.uiui.city"); + //扶小鹰 + this.add("com.fuying.fuxiaoying"); + this.add("com.fuying.aobama.pad"); + this.add("com.fuying.english"); + this.add("com.moshujiamm.moshujia"); + this.add("com.pengren.growthspace"); + this.add("com.zhiduoke.fxy"); + }}; + + public static long getPackageSize(Context context, String filePath) { + long size = new File(filePath).length(); + return size; + } + /** * 发送app安装情况 */ @@ -687,6 +710,11 @@ public class NetInterfaceManager { } Log.e("SendAppInstallInfo", "pkgs: " + pkgs); for (PackageInfo info : list) { + //排除掉部分系统应用 + if (ApkUtils.isSystemApp(mContext, info.packageName) && !showPackages.contains(info.packageName)) { + continue; + } + //排除掉没有图标的应用 if (!pkgs.contains(info.packageName)) { continue; } @@ -700,6 +728,7 @@ public class NetInterfaceManager { } uploadInfo.setFirstInstallTime(info.firstInstallTime / 1000); uploadInfo.setLastUpdateTime(info.lastUpdateTime / 1000); + uploadInfo.setApp_size(getPackageSize(mContext, info.applicationInfo.publicSourceDir)); uploadInfos.add(uploadInfo); } String json = GsonUtils.toJsonString(uploadInfos); @@ -1653,12 +1682,12 @@ public class NetInterfaceManager { .subscribe(new Observer() { @Override public void onSubscribe(@NonNull Disposable d) { - + Log.e("updateAdminInfo", "onSubscribe: "); } @Override public void onNext(@NonNull BaseResponse baseResponse) { - Log.e("updateAdminInfo", "onNext: " + baseResponse.msg); + Log.e("updateAdminInfo", "onNext: " + baseResponse); } @@ -1669,7 +1698,7 @@ public class NetInterfaceManager { @Override public void onComplete() { - + Log.e("updateAdminInfo", "onComplete: "); } }); } diff --git a/app/src/main/java/com/uiui/sn/network/UrlAddress.java b/app/src/main/java/com/uiui/sn/network/UrlAddress.java index 5a8eec4..fd05759 100644 --- a/app/src/main/java/com/uiui/sn/network/UrlAddress.java +++ b/app/src/main/java/com/uiui/sn/network/UrlAddress.java @@ -1,64 +1,64 @@ package com.uiui.sn.network; public class UrlAddress { - //主页接口 + /*主页接口*/ public static final String ROOT_URL = "https://led.aolelearn.cn/android/"; - //获取批次 + /*获取批次*/ public static final String GET_BATCH = "sn/getBatch"; - //设备信息接口 + /*设备信息接口*/ public static final String SNINFO = "sn/getSnInfo"; - //发送app信息 + /*发送app信息*/ public static final String APPLOG = "App/getApplog"; - //获取正在运行的app + /*获取正在运行的app*/ public static final String RUN_NEW_APP = "app/runNewApp"; - //根据包名获取更新 + /*根据包名获取更新*/ public final static String GET_APP_UPDATE = "Update/update"; - //获取当前最顶层应用和电量 + /*获取当前最顶层应用和电量*/ public final static String SEND_RUNINGAPPINFO = "Monitoring/getAppNow"; - //在线状态 + /*在线状态*/ public final static String SEND_DRIVE_STATE = "Online/online"; - //获取所有应用 + /*获取所有应用*/ public final static String GET_ALL_PACKAGE = "app/queryAllApp"; - //绑定设备消息 + /*绑定设备消息*/ public final static String BIND_DEVICES = "sn/bindSn"; - //获取系统设置 + /*获取系统设置*/ public final static String GET_SETTINGS = "control/getSetting"; - //浏览器网址管控 + /*浏览器网址管控*/ public final static String SET_BROWSER_URL = "control/getBrowser"; - //浏览器书签管控 + /*浏览器书签管控*/ public final static String SET_BROWSER_LABEL = "control/getLabel"; - //获取强制下载 + /*获取强制下载*/ public final static String GET_FORCE_INSTALL = "app/getForceDownload"; - //获取app管控 + /*获取app管控*/ public final static String GET_APP_START = "sn/querySnAppStart"; - //发app跳转管控 + /*发app跳转管控*/ public final static String GET_APP_JUMP = "sn/querySnJump"; - //app内部管控 + /*app内部管控*/ public final static String QUERY_APP_INSIDE = "control/queryAppInside"; - //发送卸载或者安装信息 + /*发送卸载或者安装信息*/ public final static String SEND_INSTALLEDORREMOVED = "app/addAppInstall"; - //发送卸载或者安装信息 + /*发送卸载或者安装信息*/ public final static String UPDATE_SNINFO = "sn/updateAdminSn"; - //根据包名获取更新 + /*根据包名获取更新*/ public final static String GET_NEWESTAPPUPDATE = "app/newestAppUpdate"; - //上传屏幕截图 + /*上传屏幕截图*/ public final static String UPLOAD_SCREEN_SNAPSHOT = "sn/uploadScreenshot"; - //获取屏幕管控 + /*获取屏幕管控*/ public final static String GET_SCREEN_LOCK = "sn/getScreenshot"; - //获取时间管控 + /*获取时间管控*/ public final static String GET_TIME_CONTROL = "sn/getTimeControlControl"; - //获取用户头像和信息 + /*获取用户头像和信息*/ public static final String GET_USER_AVATAR_INFO = "sn/getUserAvatarInfo"; - //获取小程序二维码 + /*获取小程序二维码*/ public static final String GET_APPLET_QRCODE = "file/getAppletQrCode"; - //获取操作指南 + /*获取操作指南*/ public static final String GET_OPERATION_GUIDE = "file/getFiles"; - //上传控制面版截图 + /*上传控制面版截图*/ public static final String UPLOAD_CONTROL_SCREENSHOT = "sn/uploadControlScreenshot"; - //获取应用白名单 + /*获取应用白名单*/ public static final String GET_APP_AND_WHITE = "getAppAndWhite"; - //获取是否为网课模式 - public static final String GET_CLOUD_LESSON_SETTING ="Control/getCloudLessonSetting"; + /*获取是否为网课模式*/ + public static final String GET_CLOUD_LESSON_SETTING = "Control/getCloudLessonSetting"; /*获取公网IP*/ @@ -67,8 +67,8 @@ public class UrlAddress { /* * 极光 * */ - //删除alias + /*删除alias*/ public static final String DELETE_JPUSH_ALIAS = "https://device.jpush.cn/v3/aliases/"; - //删除tags + /*删除tags*/ public static final String DELETE_JPUSH_TAG = "https://device.jpush.cn/v3/tags/"; } diff --git a/app/src/main/java/com/uiui/sn/network/interceptor/RepeatRequestInterceptor.java b/app/src/main/java/com/uiui/sn/network/interceptor/RepeatRequestInterceptor.java index 35aae01..b86b80e 100644 --- a/app/src/main/java/com/uiui/sn/network/interceptor/RepeatRequestInterceptor.java +++ b/app/src/main/java/com/uiui/sn/network/interceptor/RepeatRequestInterceptor.java @@ -1,8 +1,9 @@ package com.uiui.sn.network.interceptor; import android.util.Log; +import android.util.Size; - +import com.uiui.sn.BuildConfig; import com.uiui.sn.utils.MD5Util; import org.jetbrains.annotations.NotNull; @@ -26,12 +27,17 @@ public class RepeatRequestInterceptor implements Interceptor { @Override public Response intercept(@NotNull Chain chain) throws IOException { Request request = chain.request(); + + Response response = chain.proceed(chain.request()); + String content = response.body().string(); + if (BuildConfig.DEBUG) + Log.e(TAG, "请求体返回:| Response:" + content); //相同的请求 String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString() + request.body()); long time = System.currentTimeMillis();//请求时间 try { if (requestIdsMap.size() > 0 && requestIdsMap.containsKey(requestKey)) { - Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url() + "\t" + bodyToString(request)); + log("重复请求:", requestKey, request); //下面这行写了不会抛出onerror // chain.call().cancel(); return new Response.Builder() @@ -40,7 +46,7 @@ public class RepeatRequestInterceptor implements Interceptor { .build(); } requestIdsMap.put(requestKey, time); - Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url() + "\t" + bodyToString(request)); + log("注册请求:", requestKey, request); // RepeatRequestInterceptor.Builder builder = request.newBuilder(); // builder.addHeader("header", jsonObject.toString()); return chain.proceed(request); @@ -50,18 +56,29 @@ public class RepeatRequestInterceptor implements Interceptor { } finally { if (requestIdsMap.containsKey(requestKey) && requestIdsMap.containsValue(time)) {//请求任务完成删除map中的数据 requestIdsMap.remove(requestKey); - Log.e("REPEAT-REQUEST", "移除请求:" + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url() + "\t" + bodyToString(request)); + log("移除请求:", requestKey, request); } } } - private static String bodyToString(final Request request){ + private void log(String action, String requestKey, Request request) { + if (BuildConfig.DEBUG) { + Log.e("REPEAT-REQUEST", action + requestKey + " Method @" + request.method() + " --- " + " URL = " + request.url().encodedPath() + "\t" + bodyToString(request)); + } else { + Log.e("REPEAT-REQUEST", action + requestKey + " Method @" + request.method()); + } + } + + private static String bodyToString(final Request request) { try { final Request copy = request.newBuilder().build(); final Buffer buffer = new Buffer(); copy.body().writeTo(buffer); + if (buffer.size() > 4096) { + return "-too long"; + } return buffer.readUtf8(); - } catch ( Exception e) { + } catch (Exception e) { return "-"; } } diff --git a/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java b/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java index 95f75e4..90c4955 100644 --- a/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java +++ b/app/src/main/java/com/uiui/sn/service/main/MainSPresenter.java @@ -82,22 +82,23 @@ public class MainSPresenter implements MainSContact.Presenter { .getSnInfo(true, getLifecycle(), new NetInterfaceManager.ObserverCallback() { @Override public void onSubscribe(Disposable d) { - + Log.e("getSnInfo", "onSubscribe: "); } @Override public void onNext(BaseResponse response) { + Log.e("getSnInfo", "onNext: "); mView.setSnInfo(response); } @Override public void onError(Throwable e) { - + Log.e("getSnInfo", "onError: " + e.getMessage()); } @Override public void onComplete() { - + Log.e("getSnInfo", "onComplete: "); } }); } diff --git a/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java b/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java index 8a5798d..9f2cf37 100644 --- a/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java +++ b/app/src/main/java/com/uiui/sn/tpush/MessageReceiver.java @@ -63,6 +63,7 @@ import java.util.Arrays; import java.util.Calendar; import java.util.HashSet; import java.util.List; +import java.util.concurrent.TimeUnit; import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers; import io.reactivex.rxjava3.annotations.NonNull; @@ -72,6 +73,7 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe; import io.reactivex.rxjava3.core.ObservableSource; import io.reactivex.rxjava3.core.Observer; import io.reactivex.rxjava3.disposables.Disposable; +import io.reactivex.rxjava3.functions.Consumer; import io.reactivex.rxjava3.functions.Function; import io.reactivex.rxjava3.schedulers.Schedulers; import okhttp3.MediaType; @@ -812,6 +814,7 @@ public class MessageReceiver extends XGPushBaseReceiver { synchronized private void sendStartTime(Context context, String jsonString) { NetInterfaceManager.getInstance().updateAdminInfo(); NetInterfaceManager.getInstance().sendRunningApp(); + NetInterfaceManager.getInstance().SendAppInstallInfo(); if (JGYUtils.getInstance().isScreenOn()) { NetInterfaceManager.getInstance().screenshot(); } @@ -983,13 +986,34 @@ public class MessageReceiver extends XGPushBaseReceiver { } } + private Disposable subscribe; + private long cutdownTime = 30; + private CustomDialog dialog; + synchronized void bindService(final Context context, String jsonString) { ToastUtil.debugShow("收到绑定设备请求"); JSONObject object = JSON.parseObject(jsonString); String userName = object.getString("member_name"); final String id = object.getString("id"); String phoneNum = object.getString("member_phone"); - final CustomDialog dialog = new CustomDialog(context); + dialog = new CustomDialog(context); + subscribe = Observable.interval(1, TimeUnit.SECONDS) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(new Consumer() { + @Override + public void accept(Long aLong) throws Exception { +// Log.e("TAG", "倒计时:" + aLong); + if (aLong < cutdownTime && !subscribe.isDisposed()) { + dialog.setNegtiveText("拒绝" + "(" + (cutdownTime - aLong) + ")"); + } else { + bind(context, id, 0); + dialog.dismiss(); + subscribe.dispose(); + subscribe = null; + } + } + }); dialog.setMessage(phoneNum + "的用户请求绑定你的平板") .setTitle("绑定请求") .setPositive("允许") @@ -1000,6 +1024,8 @@ public class MessageReceiver extends XGPushBaseReceiver { public void onPositiveClick() { bind(context, id, 1); dialog.dismiss(); + subscribe.dispose(); + subscribe = null; } @Override @@ -1007,6 +1033,8 @@ public class MessageReceiver extends XGPushBaseReceiver { bind(context, id, 0); ToastUtil.show("设备取消绑定"); dialog.dismiss(); + subscribe.dispose(); + subscribe = null; } }); dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); @@ -1015,20 +1043,19 @@ public class MessageReceiver extends XGPushBaseReceiver { dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM); dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); - new CountDownTimer(30000, 1000) { - - @Override - public void onTick(long l) { - String value = String.valueOf((int) (l / 1000)); - dialog.setNegtiveText("拒绝" + "(" + value + ")"); - } - - @Override - public void onFinish() { - bind(context, id, 0); - dialog.dismiss(); - } - }.start(); +// new CountDownTimer(30000, 1000) { +// @Override +// public void onTick(long l) { +// String value = String.valueOf((int) (l / 1000)); +// dialog.setNegtiveText("拒绝" + "(" + value + ")"); +// } +// +// @Override +// public void onFinish() { +// bind(context, id, 0); +// dialog.dismiss(); +// } +// }.start(); } synchronized private void bind(final Context context, String id, int type) { @@ -1059,11 +1086,13 @@ public class MessageReceiver extends XGPushBaseReceiver { @Override public void onError(@NonNull Throwable e) { Log.e("bind", "onError: " + e.getMessage()); + onComplete(); } @Override public void onComplete() { Log.e("bind", "onComplete: "); + MainService.getPresenter().getSnInfo(); } }); } diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index 133bfe5..e13299d 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -102,7 +102,6 @@