version:2.3

fix:
add:优化上传app信息失败
This commit is contained in:
2022-06-23 22:32:18 +08:00
parent 0f5f92b8c4
commit fce5fb5280
16 changed files with 301 additions and 100 deletions

View File

@@ -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() {

View File

@@ -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();
}
});

View File

@@ -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());

View File

@@ -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;
}
}

View File

@@ -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() {

View File

@@ -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();

View File

@@ -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;

View File

@@ -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);
}
}

View File

@@ -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: ");
}
});
}

View File

@@ -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/";
}

View File

@@ -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 "-";
}
}

View File

@@ -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: ");
}
});
}

View File

@@ -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();
}
});
}