version:2.3
fix: add:优化上传app信息失败
This commit is contained in:
@@ -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() {
|
||||
|
||||
@@ -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<ActivityEvent> 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<BaseResponse<SnInfo>>() {
|
||||
}.getType();
|
||||
BaseResponse<SnInfo> 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<BaseResponse<List<AppInfo>>>() {
|
||||
@Override
|
||||
public void onSubscribe(Disposable d) {
|
||||
Log.e(TAG + "getForceInstall", "onSubscribe: ");
|
||||
Log.e("getForceInstall", "onSubscribe: ");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onNext(BaseResponse<List<AppInfo>> listBaseResponse) {
|
||||
Log.e(TAG + "getForceInstall", "onNext: " + listBaseResponse);
|
||||
Log.e("getForceInstall", "onNext: " + listBaseResponse);
|
||||
int code = listBaseResponse.code;
|
||||
if (code == 200) {
|
||||
List<AppInfo> 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();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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() {
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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<ActivityEvent> 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<String> showPackages = new ArrayList<String>() {{
|
||||
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<BaseResponse>() {
|
||||
@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: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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/";
|
||||
}
|
||||
|
||||
@@ -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 "-";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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: ");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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<Long>() {
|
||||
@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();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -102,7 +102,6 @@
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_bind"
|
||||
android:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="8dp"
|
||||
|
||||
@@ -108,7 +108,6 @@
|
||||
android:text="@string/scan_tips"
|
||||
android:textColor="@color/black"
|
||||
android:textStyle="bold"
|
||||
android:visibility="gone"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
|
||||
Reference in New Issue
Block a user