version:2.6

fix:更新retrofit,优化请求次数
update:
This commit is contained in:
2022-02-24 18:44:56 +08:00
parent 7d50cb709b
commit 3c45ccc7b1
76 changed files with 1130 additions and 1705 deletions

View File

@@ -83,8 +83,8 @@ android {
MTKnewly {
flavorDimensions "default"
versionCode 6
versionName "1.5"
versionCode 7
versionName "1.6"
/*********************************极光推送************************************/
manifestPlaceholders = [
XG_ACCESS_ID : "1500026372",
@@ -299,7 +299,7 @@ dependencies {
implementation 'androidx.cardview:cardview:1.0.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'
implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.1.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
@@ -312,22 +312,24 @@ dependencies {
//Retrofit
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0'
//RxJava
implementation 'io.reactivex.rxjava2:rxjava:2.2.12'
implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'io.reactivex.rxjava3:rxandroid:3.0.0'
implementation 'io.reactivex.rxjava3:rxjava:3.0.0'
//生命周期管理
implementation 'com.trello.rxlifecycle2:rxlifecycle:2.2.2'
implementation 'com.trello.rxlifecycle2:rxlifecycle-android:2.2.2'
implementation 'com.trello.rxlifecycle2:rxlifecycle-components:2.2.2'
implementation 'com.trello.rxlifecycle4:rxlifecycle:4.0.2'
implementation 'com.trello.rxlifecycle4:rxlifecycle-android:4.0.2'
implementation 'com.trello.rxlifecycle4:rxlifecycle-components:4.0.2'
implementation 'com.trello.rxlifecycle4:rxlifecycle-components-preference:4.0.2'
implementation 'com.trello.rxlifecycle4:rxlifecycle-android-lifecycle:4.0.2'
//implementation "com.uber.autodispose:autodispose:1.3.0"
//implementation "com.uber.autodispose:autodispose-android-archcomponents:1.3.0"
//Google
implementation 'com.google.code.gson:gson:2.8.7'
implementation 'com.google.zxing:core:3.3.0'
implementation 'com.google.code.gson:gson:2.9.0'
implementation 'com.google.zxing:core:3.4.1'
//图片加载框架
implementation 'com.github.bumptech.glide:glide:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
implementation 'com.github.bumptech.glide:glide:4.13.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.13.0'
//fastjson
implementation 'com.alibaba:fastjson:1.2.79'
//极光推送
@@ -336,39 +338,39 @@ dependencies {
//高德地图定位
implementation 'com.amap.api:location:5.1.0'
//MMKV
implementation 'com.tencent:mmkv-static:1.2.11'
implementation 'com.tencent:mmkv-static:1.2.12'
//腾讯移动推送 TPNS
implementation 'com.tencent.tpns:tpns:1.3.1.1-release'
//RxHttp
implementation 'com.github.liujingxing.rxhttp:rxhttp:2.6.5'
//implementation 'com.squareup.okhttp3:okhttp:4.9.1' //rxhttp v2.2.2版本起需要手动依赖okhttp
annotationProcessor 'com.github.liujingxing.rxhttp:rxhttp-compiler:2.6.5'
//生成RxHttp类纯Java项目请使用annotationProcessor代替kapt
implementation 'com.github.liujingxing.rxlife:rxlife-coroutine:2.1.0' //管理协程生命周期,页面销毁,关闭请求
//rxjava2 (RxJava2/Rxjava3二选一使用asXxx方法时必须)
//implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
//implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
implementation 'com.github.liujingxing.rxlife:rxlife-rxjava2:2.1.0' //管理RxJava2生命周期页面销毁关闭请求
// //RxHttp
// implementation 'com.github.liujingxing.rxhttp:rxhttp:2.6.5'
// //implementation 'com.squareup.okhttp3:okhttp:4.9.1' //rxhttp v2.2.2版本起需要手动依赖okhttp
// annotationProcessor 'com.github.liujingxing.rxhttp:rxhttp-compiler:2.6.5'
// //生成RxHttp类纯Java项目请使用annotationProcessor代替kapt
// implementation 'com.github.liujingxing.rxlife:rxlife-coroutine:2.1.0' //管理协程生命周期,页面销毁,关闭请求
// //rxjava2 (RxJava2/Rxjava3二选一使用asXxx方法时必须)
// //implementation 'io.reactivex.rxjava2:rxjava:2.2.8'
// //implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
// implementation 'com.github.liujingxing.rxlife:rxlife-rxjava2:2.1.0' //管理RxJava2生命周期页面销毁关闭请求
//工具类
implementation 'com.blankj:utilcodex:1.30.6'
implementation 'com.blankj:utilcodex:1.31.0'
//Aria
implementation 'com.arialyy.aria:core:3.8.15'
annotationProcessor 'com.arialyy.aria:compiler:3.8.15'
//压缩文件解压
implementation 'org.zeroturnaround:zt-zip:1.13'
implementation 'org.zeroturnaround:zt-zip:1.14'
//更换字体框架
implementation 'uk.co.chrisjenx:calligraphy:2.3.0'
//Java WebSocket
implementation "org.java-websocket:Java-WebSocket:1.4.1"
implementation "org.java-websocket:Java-WebSocket:1.5.2"
//状态栏透明
implementation 'com.gitee.zackratos:UltimateBarX:0.7.1'
implementation 'com.gitee.zackratos:UltimateBarX:0.8.0'
// // 基础依赖包,必须要依赖
// implementation 'com.gyf.immersionbar:immersionbar:3.0.0'
// // fragment快速实现可选
// implementation 'com.gyf.immersionbar:immersionbar-components:3.0.0'
// // kotlin扩展可选
// implementation 'com.gyf.immersionbar:immersionbar-ktx:3.0.0'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.23'
implementation 'pl.droidsonroids.gif:android-gif-drawable:1.2.24'
}
preBuild {

View File

@@ -4,9 +4,10 @@
coreApp="true"
package="com.aoleyun.sn"
android:sharedUserId="android.uid.system">
<queries>
<intent>
<action android:name="android.intent.action.MAIN "/>
<action android:name="android.intent.action.MAIN " />
</intent>
</queries>
@@ -130,6 +131,15 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.checknet.CheckNetActivity"
android:theme="@style/activity_styles">
<!-- <intent-filter>-->
<!-- <action android:name="android.intent.action.MAIN" />-->
<!-- <category android:name="android.intent.category.LAUNCHER" />-->
<!-- </intent-filter>-->
</activity>
<activity
android:name=".activity.main.MainActivity"
android:excludeFromRecents="true"
@@ -138,9 +148,6 @@
<activity
android:name=".activity.requestlog.RequestLogActivity"
android:launchMode="singleTask" />
<activity
android:name=".activity.checknet.CheckNetActivity"
android:theme="@style/activity_styles" />
<service
android:name=".service.main.MainService"
@@ -243,7 +250,7 @@
<!-- <action android:name="android.intent.action.MEDIA_REMOVED" /> -->
<!-- <action android:name="android.intent.action.MEDIA_BAD_REMOVAL" /> -->
<!-- 自定义广播 -->
<action android:name="com.aoleyun.sn.intent.action.BOOT_COMPLETED" />
<action android:name="aoleyun.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<!-- <receiver android:name=".log.LogReceiver" -->

View File

@@ -79,7 +79,7 @@ public class SplashActivity extends AppCompatActivity {
private void initView() {
if (BuildConfig.DEBUG) {
JGYUtils.getInstance().cleanBackgroundMemory();
NetInterfaceManager.getInstance().uploadLogFile();
// NetInterfaceManager.getInstance().uploadLogFile();
bt_log = findViewById(R.id.bt_log);
bt_log.setVisibility(View.VISIBLE);
bt_log.setOnClickListener(view -> {
@@ -157,7 +157,7 @@ public class SplashActivity extends AppCompatActivity {
Log.e(TAG, "debugTest: " + e.getMessage());
}
Utils.getPublicIP(this);
// Utils.getPublicIP(this);
Utils.obtainWifiInfo(this);
Log.e("getLocalIP", "set: " + Utils.getIPAddress(this));
// WiFiUtils.getInstance().connectWifiPws("七彩宏云","colorfulyun.com");

View File

@@ -1,40 +1,36 @@
package com.aoleyun.sn.activity.checknet;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.os.Handler;
import android.os.Message;
import android.os.SystemClock;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
import com.aoleyun.sn.R;
import com.aoleyun.sn.base.BaseActivity;
import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.ExampleUtil;
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;
import com.blankj.utilcode.util.NetworkUtils;
import com.google.gson.JsonObject;
import java.util.concurrent.TimeUnit;
import butterknife.BindView;
import butterknife.ButterKnife;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import pl.droidsonroids.gif.GifImageView;
public class CheckNetActivity extends BaseActivity implements CheckNetContact.MainView, NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = CheckNetActivity.class.getSimpleName();
@BindView(R.id.giv_1)
GifImageView giv_1;
@BindView(R.id.giv_2)
@@ -50,20 +46,8 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
@BindView(R.id.bt_confirm)
Button bt_confirm;
private static final String TAG = CheckNetActivity.class.getSimpleName();
private CheckNetPresenter mPresenter;
private CheckNetPresenter mCheckNetPresenter;
private boolean netWorkIsRunning = false;
private boolean updateApp = false;
//for receive customer msg from jpush server
private MessageReceiver mMessageReceiver;
public static final String MESSAGE_RECEIVED_ACTION = "com.aoleyun.sn.MESSAGE_RECEIVED_ACTION";
public static final String KEY_TITLE = "title";
public static final String KEY_MESSAGE = "message";
public static final String KEY_EXTRAS = "extras";
private static Handler mHandler;
@Override
public void onDisconnected() {
@@ -74,8 +58,9 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
public void onConnected(NetworkUtils.NetworkType networkType) {
Log.e("OnNetworkStatusChanged", "onConnected: ");
timeMillis = SystemClock.elapsedRealtime();
giv_1.setImageResource(R.drawable.succeed);
//直接获取数据
mPresenter.getLockedState();
mCheckNetPresenter.getLockedState();
}
@Override
@@ -83,82 +68,82 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
return R.layout.activity_checknet;
}
boolean isAvailable = false;
int runTimes = 0;
@Override
public void initView() {
ButterKnife.bind(this);
mPresenter = new CheckNetPresenter(this);
mPresenter.attachView(this);
mPresenter.setProvider(this);
mCheckNetPresenter = new CheckNetPresenter(this);
mCheckNetPresenter.attachView(this);
mCheckNetPresenter.setProvider(this);
mCheckNetPresenter.setLifecycle(lifecycleSubject);
JGYUtils.startServices(CheckNetActivity.this);
Log.e(TAG, "initView: " + "start request");
NetworkUtils.registerNetworkStatusChangedListener(this);
mHandler = new Handler() {
checkNetworkIsAvailable(new NetworkInfo() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
Resut resut = (Resut) msg.obj;
if (isAvailable == true || runTimes == 10) {
if (resut.isAvailable) {
public void isAvailable(boolean available) {
runOnUiThread(() -> {
if (available) {
giv_1.setImageResource(R.drawable.succeed);
mCheckNetPresenter.getLockedState();
} else {
giv_1.setImageResource(R.drawable.failed);
}
mPresenter.getLockedState();
}
}
};
checkNetworkIsAvailable();
bt_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
MainService.mPresenter.getLockedState();
finish();
});
}
});
mPresenter.getFirstConnect();
bt_confirm.setOnClickListener(view -> finish());
mCheckNetPresenter.getFirstConnect();
}
private static class Resut {
int Times;
boolean isAvailable;
interface NetworkInfo {
void isAvailable(boolean available);
}
private void checkNetworkIsAvailable() {
new Thread(new Runnable() {
@Override
public void run() {
while (!isAvailable && runTimes < 10) {
runTimes++;
Log.e("initView", "run: " + "" + runTimes + "次检测网络");
if (NetworkUtils.isAvailable()) {
isAvailable = true;
Resut resut = new Resut();
resut.Times = runTimes;
resut.isAvailable = true;
Message message = new Message();
message.obj = resut;
mHandler.sendMessage(message);
} else {
Resut resut = new Resut();
resut.Times = runTimes;
resut.isAvailable = false;
Message message = new Message();
message.obj = resut;
mHandler.sendMessage(message);
private Disposable mDisposable;
private void checkNetworkIsAvailable(NetworkInfo networkInfo) {
/**
* start: 开始数值
* count: 输出值的个数
* initialDelay: 延迟多少秒执行
* period: 间隔多久执行一次
* TimeUnit: 单位设置NANOSECONDS纳秒MICROSECONDS微秒MILLISECONDS毫秒SECONDSMINUTES分钟HOURS小时DAYS
*/
Observable.intervalRange(1, 10, 0, 1500, TimeUnit.MILLISECONDS)
.observeOn(Schedulers.io())
.subscribe(new Observer<Long>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
mDisposable = d;
Log.e("checkNetworkIsAvailable", "onSubscribe: ");
}
try {
synchronized (this) {
wait(1200);
@Override
public void onNext(@NonNull Long aLong) {
Log.e("checkNetworkIsAvailable", "onNext: " + "" + aLong + "次检测网络");
if (NetworkUtils.isAvailable()) {
Log.e("checkNetworkIsAvailable", "onNext: " + "网络连接成功");
networkInfo.isAvailable(true);
if (mDisposable != null && !mDisposable.isDisposed()) {
mDisposable.dispose();
}
} else {
Log.e("checkNetworkIsAvailable", "onNext: " + "网络无连接");
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
@Override
public void onError(@NonNull Throwable e) {
Log.e("checkNetworkIsAvailable", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onComplete() {
networkInfo.isAvailable(NetworkUtils.isAvailable());
Log.e("checkNetworkIsAvailable", "onComplete: ");
}
});
}
//执行所有接口耗时
@@ -166,36 +151,8 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
@Override
public void initData() {
// JPushInterface.init(this);
registerMessageReceiver();
Log.e("getMacAddress", Utils.getAndroid10MAC(this));
timeMillis = SystemClock.elapsedRealtime();
startService(new Intent(CheckNetActivity.this, MainService.class));
// mPresenter.getStudesInfo();
}
/**
* @param loocked 后台1是锁定底层0是锁定
*/
@Override
public void setLockedState(boolean loocked) {
//发送设备mac地址和信息
mPresenter.sendMACAddress();
//设置极光推送别名
mPresenter.setJpushAlias();
if (loocked) {
if (netWorkIsRunning || MainService.netWorkIsRunning) {
//如果正在执行,不执行
return;
}
SaveListUtils.getList();
//获取系统管控
mPresenter.setPushTags();
netWorkIsRunning = true;
} else {
netWorkIsRunning = false;
SysSettingUtils.setEnableSetting(this);
}
}
/**
@@ -207,25 +164,26 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
public void setFirstConnect(boolean state) {
Log.e(TAG, "isFirstConnect: " + "end request");
if (state) {
mPresenter.setDisableSetting();
mCheckNetPresenter.setDisableSetting();
} else {
}
}
@Override
public void sendMACFinish() {
mPresenter.updateDeviceInfo();
mCheckNetPresenter.updateDeviceInfo();
}
@Override
public void updateDeviceInfoFinish() {
mPresenter.getSnTimeControl();
mCheckNetPresenter.getSnTimeControl();
}
@Override
public void getSnTimeControlFinish() {
mPresenter.getEBagCode();
mCheckNetPresenter.getEBagCode();
}
@Override
@@ -233,44 +191,34 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
}
@Override
public void setAliasFinish() {
mPresenter.checkStoreUpdate();
}
@Override
public void setJpushPlatformTagsFinish() {
mCheckNetPresenter.checkStoreUpdate();
}
@Override
public void checkStoreUpdateFinish() {
mPresenter.checkInfoUpdate();
mCheckNetPresenter.checkInfoUpdate();
}
@Override
public void checkInfoUpdateFinish() {
mPresenter.checkDesktopUpdate();
mCheckNetPresenter.checkDesktopUpdate();
}
@Override
public void checkDesktopUpdateFinish() {
mPresenter.checkNotifyUpdate();
mCheckNetPresenter.checkNotifyUpdate();
}
@Override
public void checkNotifyUpdateFinish() {
mPresenter.checkBrowserUpdate();
mCheckNetPresenter.checkBrowserUpdate();
}
@Override
public void checkBrowserUpdateFinish() {
mPresenter.checkTestUpdate();
}
@Override
public void buttonCheckUpdateFinish(boolean update, JsonObject jsonObject) {
mCheckNetPresenter.checkTestUpdate();
}
@Override
@@ -278,141 +226,137 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
}
/**
* @param loocked 后台1是锁定底层0是锁定
*/
@Override
public void setLockedState(boolean loocked) {
Log.e(TAG, "setLockedState: " + loocked);
//发送设备mac地址和信息
mCheckNetPresenter.sendMACAddress();
if (loocked) {
if (netWorkIsRunning) {
//如果正在执行,不执行
return;
}
SaveListUtils.getList();
//获取系统管控
mCheckNetPresenter.setPushTags();
netWorkIsRunning = true;
} else {
netWorkIsRunning = false;
SysSettingUtils.setEnableSetting(this);
}
}
/**
* @param noTag 为空没有错误都返回true
* 设备可以没有批次,但是没有批次相当于没有数据了,就不执行下面的请求了
*/
@Override
public void setTagsFinish(boolean noTag) {
if (mPresenter.isRequestSucceeded()) {
if (mCheckNetPresenter.isRequestSucceeded()) {
Log.e(TAG, "setTagsFinish: " + mCheckNetPresenter.isRequestSucceeded());
giv_2.setImageResource(R.drawable.succeed);
giv_3.setImageResource(R.drawable.succeed);
} else {
giv_2.setImageResource(R.drawable.failed);
giv_3.setImageResource(R.drawable.failed);
}
if (noTag) {
Log.e(TAG, "setTagsFinished: " + "not set tag");
netWorkIsRunning = false;
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - timeMillis) + " ms");
} else {
mPresenter.getSystemSettingbegin();
mCheckNetPresenter.getSystemSettingbegin();
}
}
private void showDialog(JsonObject jsonObject) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("更新:");
builder.setMessage("检测到有新版本,是否更新?");
builder.setIcon(R.mipmap.ic_launcher);
builder.setCancelable(true);
//设置正面按钮
builder.setPositiveButton("更新", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
JGYUtils.getInstance().installAPK(jsonObject);
dialog.dismiss();
}
});
//设置反面按钮
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
builder.show();
}
@Override
public void getSystemSettingbegin() {
mPresenter.getAppLimit();
mCheckNetPresenter.getAppLimit();
}
@Override
public void getAppLimitFinish(String packageList) {
mPresenter.getDeviceBatch(packageList);
mCheckNetPresenter.getDeviceBatch(packageList);
}
@Override
public void getDeviceBatchFinish() {
mPresenter.getForceDownload();
mCheckNetPresenter.getForceDownload();
}
@Override
public void getForceDownloadFinish() {
mPresenter.getBrowserList();
mCheckNetPresenter.getBrowserList();
}
@Override
public void getBrowserListFinish(String whitelist) {
mPresenter.getBrowserBookmarks(whitelist);
mCheckNetPresenter.getBrowserBookmarks(whitelist);
}
@Override
public void getBrowserBookmarksFinish() {
mPresenter.getBrowserWhiteList();
mPresenter.getDesktopIcon();
mCheckNetPresenter.getBrowserWhiteList();
mCheckNetPresenter.getDesktopIcon();
}
@Override
public void getDesktopIconFinish() {
mPresenter.getAppAutoStartUpdateAndNet();
mCheckNetPresenter.getAppAutoStartUpdateAndNet();
}
@Override
public void getAppAutoStartUpdateAndNetFinish() {
mPresenter.getAppIDControl();
mCheckNetPresenter.getAppIDControl();
}
@Override
public void getAppIDControlFinish() {
mPresenter.setAppinsideWeb();
mCheckNetPresenter.setAppinsideWeb();
}
@Override
public void setAppinsideWebFinish() {
mPresenter.setSystemSetting();
mCheckNetPresenter.setSystemSetting();
}
@Override
public void setSystemSettingFinish() {
mPresenter.getDefaultApp();
mCheckNetPresenter.getDefaultApp();
}
@Override
public void setDefaultAppFinish() {
mPresenter.getROMApp();
mCheckNetPresenter.getROMApp();
}
@Override
public void getROMAppFinish() {
mPresenter.getDeveloper();
mCheckNetPresenter.getDeveloper();
}
@Override
public void getDeveloperFinish() {
mPresenter.setLogoImg();
mCheckNetPresenter.setLogoImg();
}
@Override
public void setLogoImgFinish() {
mPresenter.setTopApp();
mCheckNetPresenter.setTopApp();
}
@Override
public void setTopAppFinish() {
mPresenter.getDefaultDesktop();
mCheckNetPresenter.getDefaultDesktop();
}
@Override
public void getDefaultDesktopFinish() {
netWorkIsRunning = false;
if (mPresenter.isRequestSucceeded()) {
giv_2.setImageResource(R.drawable.succeed);
if (mCheckNetPresenter.isRequestSucceeded()) {
giv_3.setImageResource(R.drawable.succeed);
} else {
giv_2.setImageResource(R.drawable.failed);
giv_3.setImageResource(R.drawable.failed);
}
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - timeMillis) + " ms");
@@ -433,28 +377,12 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume() {
super.onResume();
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
mCheckNetPresenter.detachView();
JGYUtils.startServices(CheckNetActivity.this);
NetworkUtils.unregisterNetworkStatusChangedListener(this);
MainService.mPresenter.getLockedState();
}
@Override
@@ -476,32 +404,4 @@ public class CheckNetActivity extends BaseActivity implements CheckNetContact.Ma
finish();
}
}
//jiguang
public void registerMessageReceiver() {
mMessageReceiver = new CheckNetActivity.MessageReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(MESSAGE_RECEIVED_ACTION);
LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, filter);
}
public static class MessageReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
try {
if (MESSAGE_RECEIVED_ACTION.equals(intent.getAction())) {
String messge = intent.getStringExtra(KEY_MESSAGE);
String extras = intent.getStringExtra(KEY_EXTRAS);
StringBuilder showMsg = new StringBuilder();
showMsg.append(KEY_MESSAGE + " : " + messge + "\n");
if (!ExampleUtil.isEmpty(extras)) {
showMsg.append(KEY_EXTRAS + " : " + extras + "\n");
}
}
} catch (Exception e) {
}
}
}
}

View File

@@ -1,20 +1,15 @@
package com.aoleyun.sn.activity.checknet;
import android.graphics.Bitmap;
import android.view.View;
import com.google.gson.JsonObject;
import com.aoleyun.sn.base.BasePresenter;
import com.aoleyun.sn.base.BaseView;
public class CheckNetContact {
public interface Presenter extends BasePresenter<MainView> {
//获取设备锁定状态
void getLockedState();
//是否第一次联网
//1.是否第一次联网
void getFirstConnect();
//关闭所有功能
//1.关闭所有功能
void setDisableSetting();
//发送mac地址
void sendMACAddress();
//更新设备信息
@@ -23,8 +18,6 @@ public class CheckNetContact {
void getSnTimeControl();
//获取电子书包激活码
void getEBagCode();
//设置击关推送别名
void setJpushAlias();
//设置极光推送平台标签
void setJpushPlatformTags(int platform);
//获取应用市场更新
@@ -37,11 +30,11 @@ public class CheckNetContact {
void checkNotifyUpdate();
//获取浏览器升级
void checkBrowserUpdate();
//手动获取设备信息更新
void buttonCheckUpdate(View view);
//获取测试应用更新
void checkTestUpdate();
//开始
//2.获取设备锁定状态
void getLockedState();
//设置极光推送标签
void setPushTags();
//获取开发者选项
@@ -92,10 +85,9 @@ public class CheckNetContact {
}
public interface MainView extends BaseView {
//获取设备锁定状态
void setLockedState(boolean loocked);
//是否第一次联网
//1.是否第一次联网
void setFirstConnect(boolean state);
//发送mac地址
void sendMACFinish();
//更新设备信息
@@ -104,8 +96,6 @@ public class CheckNetContact {
void getSnTimeControlFinish();
//获取电子书包激活码
void getEBagCodeFinish();
//设置击关推送别名
void setAliasFinish();
//设置极光推送平台标签
void setJpushPlatformTagsFinish();
//获取应用市场更新
@@ -118,11 +108,11 @@ public class CheckNetContact {
void checkNotifyUpdateFinish();
//获取浏览器升级
void checkBrowserUpdateFinish();
//手动获取设备信息更新
void buttonCheckUpdateFinish(boolean update, JsonObject jsonObject);
//获取测试应用更新
void checkTestUpdateFinish();
//开始
//2.获取设备锁定状态
void setLockedState(boolean loocked);
//设置极光推送标签
void setTagsFinish(boolean noTag);
//获取开发者选项结束

View File

@@ -1,14 +1,11 @@
package com.aoleyun.sn.activity.checknet;
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
@@ -47,8 +44,9 @@ import com.google.gson.reflect.TypeToken;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushManager;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle2.LifecycleProvider;
import com.trello.rxlifecycle2.android.ActivityEvent;
import com.trello.rxlifecycle4.LifecycleProvider;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import java.io.IOException;
import java.lang.reflect.Type;
@@ -57,16 +55,15 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
import okhttp3.ResponseBody;
/**
* MainActivity和MainService 的 Presenter
*
* @author jgy
*/
public class CheckNetPresenter implements CheckNetContact.Presenter {
@@ -90,12 +87,23 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
return provider;
}
private BehaviorSubject<ActivityEvent> lifecycle;
public void setLifecycle(BehaviorSubject<ActivityEvent> lifecycle) {
this.lifecycle = lifecycle;
}
public BehaviorSubject<ActivityEvent> getLifecycle() {
return lifecycle;
}
public CheckNetPresenter(Context context) {
this.mContext = context;
Log.e(TAG, "MainPresenter: " + context.getClass());
}
public boolean isRequestSucceeded() {
Log.e(TAG, "isRequestSucceeded: " + requestSucceeded);
return requestSucceeded;
}
@@ -109,74 +117,6 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
this.mView = null;
}
private long lastgetLockedTime;
private long one_minute = 1000 * 60;
@Override
public void getLockedState() {
MMKV mmkv = MMKV.defaultMMKV();
lastgetLockedTime = mmkv.decodeLong(CheckNetPresenter.GET_SETTING_FINISH_TIME);
Log.e(TAG, "getLockedState: " + lastgetLockedTime);
if (System.currentTimeMillis() - lastgetLockedTime < one_minute) {
Log.e(TAG, "getLockedState: lastgetLockedTime = " + lastgetLockedTime);
return;
}
// lastgetLockedTime = System.currentTimeMillis();
NetInterfaceManager.getInstance()
.getDevicesLockedStateObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e(TAG + ":" + "getLockedState", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse response) {
requestSucceeded = true;
Log.e(TAG + ":" + "getLockedState", "onNext: " + JSONObject.toJSONString(response));
if (response.code == OK) {
JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
int locked = jsonObject.get("lock").getAsInt();
Log.e(TAG + ":" + "getLockedState", "locked: " + locked);
int oldState = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 0);
Log.e(TAG + ":" + "getLockedState", "qch_unlock_ipad: " + oldState);
//后台1是锁定底层0是锁定
SPUtils.put(mContext, CommonConfig.JGY_FIRST_CONNECT, 1);
if (locked == 1) {
if (oldState == 1) {
Log.e(TAG + ":" + "getLockedState", "onNext: " + "state changed , reset devices");
Utils.doMasterClear(mContext);
}
Settings.System.putInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 0);
} else {
// SysSettingUtils.setEnableSetting(mContext);
Settings.System.putInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 1);
}
mView.setLockedState(locked == 1);
} else if (response.code == -300) {
mView.setLockedState(false);
Log.e(TAG + ":" + "getLockedState", "locked: " + false);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "getLockedState", "onError: " + e.getMessage());
int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 0);
Log.e(TAG + ":" + "getLockedState", "locked: " + locked);
mView.setLockedState(locked == 0);
}
@Override
public void onComplete() {
Log.e(TAG + ":" + "getLockedState", "onComplete: ");
}
});
}
/**
* 第一次连接
*/
@@ -194,7 +134,8 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
SysSettingUtils.setDisableSetting(mContext);
}
private long lastgetLockedTime;
private long one_minute = 1000 * 60;
private long lastSendMACTime;
@Override
@@ -213,7 +154,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
NetInterfaceManager.getInstance()
.sendMACAddressObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -252,58 +193,29 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
mView.updateDeviceInfoFinish();
return;
}
updateDevicesInfo(mContext);
mView.updateDeviceInfoFinish();
NetInterfaceManager.getInstance().updateDeviceInfo(new NetInterfaceManager.ObserverCallback() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseResponse response) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
mView.updateDeviceInfoFinish();
}
});
}
@SuppressLint("NewApi")
synchronized private void updateDevicesInfo(Context context) {
String address = String.valueOf(SPUtils.get(context, "AmapAddress", "-"));
if ("-".equals(address)) {
address = (String) SPUtils.get(context, "AmapError", "-");
}
String longitude = String.valueOf(SPUtils.get(context, "longitude", "0"));
String latitude = String.valueOf(SPUtils.get(context, "latitude", "0"));
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("address", address);
jsonObject.addProperty("longitude", longitude);
jsonObject.addProperty("latitude", latitude);
String add = jsonObject.toString();
Log.e(TAG, "updateDevicesInfo: " + add);
NetInterfaceManager.getInstance().getUpdateDeviceInfo()
.updateDeviceInfo(
Utils.getSerial(),
NetInterfaceManager.HTTP_KEY,
Utils.getMachine(context),
Utils.getHardware(context),
add)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e(TAG + ":" + "updateDevicesInfo", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse baseResponse) {
requestSucceeded = true;
Log.e(TAG + ":" + "updateDevicesInfo", "onNext: " + baseResponse);
}
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "updateDevicesInfo", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onComplete() {
Log.e(TAG + ":" + "updateDevicesInfo", "onComplete: ");
}
});
}
@Override
public void getSnTimeControl() {
@@ -313,7 +225,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
}
NetInterfaceManager.getInstance()
.getSnTimeObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -364,7 +276,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
public void getEBagCode() {
NetInterfaceManager.getInstance()
.getEBagCodeControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -400,15 +312,41 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
}
@Override
public void setJpushAlias() {
mView.setAliasFinish();
public void getLockedState() {
MMKV mmkv = MMKV.defaultMMKV();
lastgetLockedTime = mmkv.decodeLong(CheckNetPresenter.GET_SETTING_FINISH_TIME);
Log.e(TAG, "getLockedState: " + lastgetLockedTime);
NetInterfaceManager.getInstance()
.getLockedState(lifecycle, new NetInterfaceManager.ObserverCallback() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(BaseResponse response) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
Log.e(TAG, "onComplete: ");
int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED);
Log.e(TAG + ":" + "getLockedState", "locked: " + locked);
mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED);
}
});
}
@Override
public void setPushTags() {
NetInterfaceManager.getInstance()
.getJpushTagsObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -462,12 +400,12 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "setPushTags", "onError: " + e.getMessage());
mView.setTagsFinish(true);
onComplete();
}
@Override
public void onComplete() {
mView.setTagsFinish(true);
Log.e(TAG + ":" + "setPushTags", "onComplete: ");
}
});
@@ -478,15 +416,6 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
mView.setJpushPlatformTagsFinish();
}
// private void setTag(Set set) {
// TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean();
// tagAliasBean.action = ACTION_SET;
// sequence++;
// tagAliasBean.tags = set;
// tagAliasBean.isAliasAction = false;
// TagAliasOperatorHelper.getInstance().handleAction(mContext, sequence, tagAliasBean);
// }
@Override
public void checkStoreUpdate() {
checkUpdateStore();
@@ -499,7 +428,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -542,7 +471,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -583,7 +512,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -624,7 +553,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -665,7 +594,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -698,70 +627,6 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
});
}
long buttonCheckUpdateTime = 0;
@Override
public void buttonCheckUpdate(View view) {
// if ((System.currentTimeMillis() - buttonCheckUpdateTime) < 10000) {
// buttonCheckUpdateTime = System.currentTimeMillis();
// ToastUtil.show("正在检查更新");
// } else {
// ToastUtil.show("你已经过检查,请稍后再来");
// }
checkUpdateInfo();
}
private void checkUpdateInfo() {
NetInterfaceManager.getInstance()
.getUpdateApi()
.getUpdate(BuildConfig.APPLICATION_ID,
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e(TAG + ":" + "checkUpdateInfo", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse response) {
requestSucceeded = true;
Log.e(TAG + ":" + "checkUpdateInfo", "onNext: " + response);
if (response.code == OK) {
JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
long versionCode = jsonObject.get("version_code").getAsLong();
PackageManager pm = mContext.getPackageManager();
PackageInfo info = null;
try {
info = pm.getPackageInfo(BuildConfig.APPLICATION_ID, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (null == info || info.versionCode < versionCode) {
mView.buttonCheckUpdateFinish(true, jsonObject);
} else {
mView.buttonCheckUpdateFinish(false, null);
}
} else {
mView.buttonCheckUpdateFinish(false, null);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "checkUpdateInfo", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onComplete() {
Log.e(TAG + ":" + "checkUpdateInfo", "onComplete: ");
}
});
}
/**
* 获取灰度测试更新
*/
@@ -769,7 +634,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
public void checkTestUpdate() {
NetInterfaceManager.getInstance()
.getTestUpdateObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<List<ForceDownloadData>>>() {
@Override
public void onSubscribe(Disposable d) {
@@ -815,7 +680,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
public void getAppLimit() {
NetInterfaceManager.getInstance()
.getAppLimitObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -928,7 +793,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
public void getForceDownload() {
NetInterfaceManager.getInstance()
.getForceDownloadObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ForceDownloadBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1051,7 +916,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
// NetInterfaceManager.getInstance()
// .getBrowserListSettingObservable()
// .observeOn(Schedulers.io())
// .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
// .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
// .subscribe(new Observer<BaseResponse<BrowserData>>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
@@ -1113,7 +978,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
// NetInterfaceManager.getInstance()
// .getBrowserListSettingObservable()
// .observeOn(Schedulers.io())
// .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
// .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
// .subscribe(new Observer<BaseResponse<BrowserData>>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
@@ -1317,7 +1182,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
NetInterfaceManager.getInstance()
.getDesktopIconObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1380,7 +1245,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
.getAppAutoStartUpdateAndNetObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<NetAndLaunchBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1417,7 +1282,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
NetInterfaceManager.getInstance()
.getAppIDControlObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1486,7 +1351,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
NetInterfaceManager.getInstance()
.getSystemSettingObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1544,7 +1409,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
public void getDefaultApp() {
NetInterfaceManager.getInstance()
.getDefaultAppApi()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<DefaultApp>>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1589,7 +1454,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
.getROMApp(NetInterfaceManager.HTTP_KEY, customVersion)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1629,7 +1494,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
public void getDeveloper() {
NetInterfaceManager.getInstance()
.getDeveloperControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1677,7 +1542,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
}
NetInterfaceManager.getInstance()
.getLogoImgObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<LogoImg>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1727,7 +1592,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
}
NetInterfaceManager.getInstance()
.getTopAppControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1782,7 +1647,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
}
NetInterfaceManager.getInstance()
.getScreenLockObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1831,7 +1696,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
}
NetInterfaceManager.getInstance()
.getDesktopObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1887,7 +1752,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
public void getPoweroffTime() {
NetInterfaceManager.getInstance()
.getPoweroffTimeControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<List<PoweroffBean>>>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1924,7 +1789,7 @@ public class CheckNetPresenter implements CheckNetContact.Presenter {
@Override
public void getWiFiPasswd() {
NetInterfaceManager.getInstance().getWiFiControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<List<WiFiAlias>>>() {
@Override
public void onSubscribe(Disposable d) {

View File

@@ -14,25 +14,23 @@ import com.aoleyun.sn.bean.StudentsInfo;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.utils.AES.CXAESUtil;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.Utils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle2.LifecycleProvider;
import com.trello.rxlifecycle2.android.ActivityEvent;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
/**
* MainActivity和MainService 的 Presenter
* MainActivity 的 Presenter
*
* @author jgy
*/
@@ -50,14 +48,14 @@ public class MainAPresenter implements MainAContact.Presenter {
private final static int NOTFOUND = -300;
private LifecycleProvider<ActivityEvent> provider;
private BehaviorSubject<ActivityEvent> lifecycle;
public void setProvider(LifecycleProvider<ActivityEvent> provider) {
this.provider = provider;
public void setLifecycle(BehaviorSubject<ActivityEvent> lifecycle) {
this.lifecycle = lifecycle;
}
public LifecycleProvider<ActivityEvent> getProvider() {
return provider;
public BehaviorSubject<ActivityEvent> getLifecycle() {
return lifecycle;
}
public MainAPresenter(Context context) {
@@ -83,20 +81,20 @@ public class MainAPresenter implements MainAContact.Presenter {
@Override
public void getQRImage(String mac) {
Log.e(TAG, "getQRImage: " + mac);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("sn", Utils.getSerial());
jsonObject.addProperty("mac", mac);
String json = jsonObject.toString();
String content = mac;
try {
content = CXAESUtil.encrypt(getAeskey(), json);
Log.e(TAG, "getQRImage: " + content);
} catch (Exception e) {
Log.e(TAG, "getQRImage: " + e.getMessage());
e.printStackTrace();
}
mView.setQRImage(JGYUtils.getInstance().createQRImage(content, 300, 300));
// Log.e(TAG, "getQRImage: " + mac);
// JsonObject jsonObject = new JsonObject();
// jsonObject.addProperty("sn", Utils.getSerial());
// jsonObject.addProperty("mac", mac);
// String json = jsonObject.toString();
// String content = mac;
// try {
// content = CXAESUtil.encrypt(getAeskey(), json);
// Log.e(TAG, "getQRImage: " + content);
// } catch (Exception e) {
// Log.e(TAG, "getQRImage: " + e.getMessage());
// e.printStackTrace();
// }
// mView.setQRImage(JGYUtils.getInstance().createQRImage(content, 300, 300));
}
/**
@@ -107,7 +105,7 @@ public class MainAPresenter implements MainAContact.Presenter {
setState();
NetInterfaceManager.getInstance()
.getStudesInfoObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<StudentsInfo>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -228,42 +226,34 @@ public class MainAPresenter implements MainAContact.Presenter {
}
private long lastgetLockedTime;
private long one_minute = 1000 * 60;
@Override
public void getLockedState() {
MMKV mmkv = MMKV.defaultMMKV();
lastgetLockedTime = mmkv.decodeLong(MainAPresenter.GET_SETTING_FINISH_TIME);
Log.e(TAG, "getLockedState: " + lastgetLockedTime);
if (System.currentTimeMillis() - lastgetLockedTime < one_minute) {
Log.e(TAG, "getLockedState: lastgetLockedTime = " + lastgetLockedTime);
return;
}
NetInterfaceManager.getInstance()
.getLockedState(lifecycle, new NetInterfaceManager.ObserverCallback() {
@Override
public void onSubscribe(Disposable d) {
NetInterfaceManager.getInstance().getLockedState(provider, new NetInterfaceManager.ObserverCallback() {
@Override
public void onSubscribe(Disposable d) {
}
}
@Override
public void onNext(BaseResponse response) {
@Override
public void onNext(BaseResponse response) {
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
Log.e(TAG, "onComplete: ");
int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED);
Log.e(TAG + ":" + "getLockedState", "locked: " + locked);
mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED);
}
});
@Override
public void onComplete() {
Log.e(TAG, "onComplete: ");
int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED);
Log.e(TAG + ":" + "getLockedState", "locked: " + locked);
mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED);
}
});
}
@Override
@@ -278,7 +268,7 @@ public class MainAPresenter implements MainAContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {

View File

@@ -24,9 +24,7 @@ import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.activity.requestlog.RequestLogActivity;
import com.aoleyun.sn.base.BaseActivity;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.ExampleUtil;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SaveListUtils;
@@ -42,13 +40,13 @@ import java.util.concurrent.TimeUnit;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class MainActivity extends BaseActivity implements MainAContact.MainView, NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = MainActivity.class.getSimpleName();
@@ -155,7 +153,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView,
ButterKnife.bind(this);
mPresenter = new MainAPresenter(this);
mPresenter.attachView(this);
mPresenter.setProvider(this);
mPresenter.setLifecycle(lifecycleSubject);
JGYUtils.startServices(MainActivity.this);
Log.e(TAG, "initView: " + "start request");
NetworkUtils.registerNetworkStatusChangedListener(this);
@@ -270,7 +268,7 @@ public class MainActivity extends BaseActivity implements MainAContact.MainView,
@Override
public void setHead(String url) {
if (TextUtils.isEmpty(url)) {
head.setImageDrawable(getDrawable(R.drawable.head));
Glide.with(head).load(getDrawable(R.drawable.head)).into(head);
} else {
Glide.with(head).load(url).into(head);
}

View File

@@ -58,7 +58,7 @@ public class RequestLogActivity extends BaseActivity implements RequestLogContac
ButterKnife.bind(this);
mPresenter = new RequestLogPresenter(this);
mPresenter.attachView(this);
mPresenter.setProvider(this);
mPresenter.setLifecycle(lifecycleSubject);
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
mAdapter = new RequestLogAdapter();
mRecyclerView.setAdapter(mAdapter);

View File

@@ -11,6 +11,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.aoleyun.sn.R;
import com.aoleyun.sn.rlog.LogBean;
import com.aoleyun.sn.utils.TimeUtils;
import com.aoleyun.sn.utils.Utils;
import java.util.List;
@@ -37,7 +38,7 @@ public class RequestLogAdapter extends RecyclerView.Adapter<RequestLogAdapter.Ho
LogBean logBean = mLogBeans.get(position);
if (logBean == null) return;
holder.tv_code.setText(logBean.getCode().toString());
holder.tv_timestamp.setText(Utils.transferLongToDate(logBean.getTimestamp()));
holder.tv_timestamp.setText(TimeUtils.transferLongToDate(logBean.getTimestamp()));
holder.tv_event.setText(logBean.getEvent());
holder.tv_operate.setText(logBean.getOperate());
holder.tv_content.setText(logBean.getContent());

View File

@@ -5,25 +5,27 @@ import android.content.Context;
import androidx.annotation.NonNull;
import com.aoleyun.sn.rlog.LogDBManager;
import com.trello.rxlifecycle2.LifecycleProvider;
import com.trello.rxlifecycle2.android.ActivityEvent;
import com.trello.rxlifecycle4.android.ActivityEvent;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
public class RequestLogPresenter implements RequestLogContact.Presenter {
private static final String TAG = RequestLogPresenter.class.getSimpleName();
private RequestLogContact.MainView mView;
private Context mContext;
private BehaviorSubject<ActivityEvent> lifecycle;
private LifecycleProvider<ActivityEvent> provider;
public void setProvider(LifecycleProvider<ActivityEvent> provider) {
this.provider = provider;
public void setLifecycle(BehaviorSubject<ActivityEvent> lifecycle) {
this.lifecycle = lifecycle;
}
public LifecycleProvider<ActivityEvent> getProvider() {
return provider;
public BehaviorSubject<ActivityEvent> getLifecycle() {
return lifecycle;
}
public RequestLogPresenter(Context context) {
this.mContext = context;
}

View File

@@ -2,13 +2,28 @@ package com.aoleyun.sn.base;
import android.os.Bundle;
import androidx.annotation.CallSuper;
import androidx.annotation.CheckResult;
import androidx.annotation.ContentView;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.aoleyun.sn.R;
import com.trello.rxlifecycle2.components.support.RxAppCompatActivity;
import com.trello.rxlifecycle4.LifecycleProvider;
import com.trello.rxlifecycle4.LifecycleTransformer;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.RxLifecycleAndroid;
import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
public abstract class BaseActivity extends RxAppCompatActivity {
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
public abstract class BaseActivity extends AppCompatActivity implements LifecycleProvider<ActivityEvent> {
public final BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create();
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@@ -32,11 +47,6 @@ public abstract class BaseActivity extends RxAppCompatActivity {
.apply();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
/**
* 设置布局
*/
@@ -52,4 +62,70 @@ public abstract class BaseActivity extends RxAppCompatActivity {
* 初始化数据
*/
public abstract void initData();
public BaseActivity() {
super();
}
@ContentView
public BaseActivity(@LayoutRes int contentLayoutId) {
super(contentLayoutId);
}
@Override
@NonNull
@CheckResult
public final Observable<ActivityEvent> lifecycle() {
return lifecycleSubject.hide();
}
@Override
@NonNull
@CheckResult
public final <T> LifecycleTransformer<T> bindUntilEvent(@NonNull ActivityEvent event) {
return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
}
@Override
@NonNull
@CheckResult
public final <T> LifecycleTransformer<T> bindToLifecycle() {
return RxLifecycleAndroid.bindActivity(lifecycleSubject);
}
@Override
@CallSuper
protected void onStart() {
super.onStart();
lifecycleSubject.onNext(ActivityEvent.START);
}
@Override
@CallSuper
protected void onResume() {
super.onResume();
lifecycleSubject.onNext(ActivityEvent.RESUME);
}
@Override
@CallSuper
protected void onPause() {
lifecycleSubject.onNext(ActivityEvent.PAUSE);
super.onPause();
}
@Override
@CallSuper
protected void onStop() {
lifecycleSubject.onNext(ActivityEvent.STOP);
super.onStop();
}
@Override
@CallSuper
protected void onDestroy() {
lifecycleSubject.onNext(ActivityEvent.DESTROY);
super.onDestroy();
}
}

View File

@@ -11,17 +11,15 @@ import androidx.multidex.MultiDexApplication;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.utils.WiFiUtils;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.manager.AmapManager;
import com.aoleyun.sn.manager.ConnectManager;
import com.aoleyun.sn.manager.FileManager;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.HTTPInterface;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.UrlAddress;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.statistics.AppInformation;
import com.aoleyun.sn.statistics.StatisticsInfo;
import com.aoleyun.sn.utils.ApkUtils;
@@ -29,7 +27,10 @@ import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SystemUtils;
import com.aoleyun.sn.utils.ToastUtil;
import com.aoleyun.sn.utils.Utils;
import com.aoleyun.sn.utils.WiFiUtils;
import com.aoleyun.sn.utils.XAPKUtils;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushConfig;
import com.tencent.android.tpush.XGPushManager;
@@ -42,13 +43,13 @@ import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.OkHttpClient;
@@ -97,6 +98,7 @@ public class BaseApplication extends MultiDexApplication {
XAPKUtils.init(this);
LogDBManager.init(this);
FileManager.init(this);
ConnectManager.init(this);
AmapManager.init(this);
AmapManager.getInstance().initAmap();

View File

@@ -18,19 +18,19 @@ import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.R;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.RemoteDebug;
import com.aoleyun.sn.R;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.utils.CacheUtils;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.HTTPInterface;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.service.main.MainService;
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.JGYUtils;
import com.aoleyun.sn.utils.MySQLData;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.SaveListUtils;
@@ -46,13 +46,13 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
@@ -718,99 +718,6 @@ public class MyJPushReceiver extends BroadcastReceiver {
}
}
public void screenshot(String s) {
JSONObject jSONObject = JSON.parseObject(s);
long createTime = jSONObject.getLong("createTime");
if (createTime != 0) {
Log.e("createTime", String.valueOf(createTime));
doscreenshot(createTime);
}
}
public void doscreenshot(final long time) {
Observable.create(new ObservableOnSubscribe<Integer>() {
@Override
public void subscribe(ObservableEmitter<Integer> e) throws Exception {
String filepath = mContext.getExternalFilesDir("db").getAbsolutePath();
int n = CmdUtil.execute("screencap -p " + filepath + File.separator + time + ".db").code;
e.onNext(n);
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Integer integer) {
if (integer == 0) {
uplaodImage(time);
} else {
Log.e("doss", "失败");
}
}
@Override
public void onError(Throwable e) {
Log.e("doss", "Throwable=" + e.getMessage());
}
@Override
public void onComplete() {
}
});
}
private void uplaodImage(long time) {
String filepath = mContext.getExternalFilesDir("db").getAbsolutePath();
// String filepath = mContext.getFileStreamPath("screenshot").getAbsolutePath();
//放在app内部data下面
File file = new File(filepath + File.separator + time + ".db");
//不要直接使用常用图片格式
if (!file.exists()) {
Log.e("uplaodImage", "File does not exists");
return;
}
//设置图片格式
// RequestBody requestFile = RequestBody.create(MediaType.parse("image/jpg"), file);
//File转RequestBody
MediaType mediaType = MediaType.Companion.parse("image/png");
RequestBody fileBody = RequestBody.Companion.create(file, mediaType);
//设置一个file文件
MultipartBody.Part body = MultipartBody.Part.createFormData("file", file.getName(), fileBody);
Map<String, String> params = new HashMap<>();
params.put("sn", Utils.getSerial());
params.put("createtime", String.valueOf(time));
NetInterfaceManager.getInstance().getScreenshotApi()
.sendScreenshot(params, body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
Log.e("uplaodImage", "onSubscribe: ");
}
@Override
public void onNext(BaseResponse baseResponse) {
Log.e("uplaodImage", "onNext: " + baseResponse.msg);
}
@Override
public void onError(Throwable e) {
Log.e("uplaodImage", "onError: " + e.getMessage());
}
@Override
public void onComplete() {
Log.e("uplaodImage", "onComplete: ");
}
});
}
private void getTimeControl(Context context, String extras) {
HTTPInterface.getSnTimeControl(context);
}

View File

@@ -0,0 +1,81 @@
package com.aoleyun.sn.manager;
import android.annotation.SuppressLint;
import android.content.Context;
import android.util.Log;
import com.aoleyun.sn.utils.TimeUtils;
import com.tencent.mmkv.MMKV;
public class ConnectManager {
private static final String TAG = ConnectManager.class.getSimpleName();
/*重启后连接成功的时间*/
public static final String REBOOT_LAST_ONNECT_TIME = "reboot_last_connect_time";
/*WiFi连接后连接成功的时间*/
public static final String WIFI_LAST_CONNECT_TIME = "WiFi_last_connect_time";
/*打开设备信息连接成功的时间*/
public static final String OPENINFO_LAST_ONNECT_TIME = "opneinfo_last_connect_time";
@SuppressLint("StaticFieldLeak")
private static ConnectManager sInstance;
private Context mContext;
private MMKV mMMKV = MMKV.defaultMMKV();
private ConnectManager(Context context) {
if (context == null) {
throw new RuntimeException("Context is NULL");
}
this.mContext = context;
}
public static void init(Context context) {
if (sInstance == null) {
Log.e(TAG, "init: ");
sInstance = new ConnectManager(context);
}
}
public static ConnectManager getInstance() {
if (sInstance == null) {
throw new IllegalStateException("You must be init ConnectManager first");
}
return sInstance;
}
/**
* @return 今天重启后是否连接
*/
public boolean isRebootFistConnect() {
long time = mMMKV.decodeLong(REBOOT_LAST_ONNECT_TIME, 0);
return !TimeUtils.isTodayTime(time);
}
/**
* @return 今天WiFi连接是否有连接
*/
public boolean isWiFiFistConnect() {
long time = mMMKV.decodeLong(WIFI_LAST_CONNECT_TIME, 0);
return !TimeUtils.isTodayTime(time);
}
/**
* @return 今天打开设备信息后是否连接
*/
public boolean isOpenInfoFistConnect() {
long time = mMMKV.decodeLong(OPENINFO_LAST_ONNECT_TIME, 0);
return !TimeUtils.isTodayTime(time);
}
/**
* @param WiFiAlias
* @return 今天切换WiFi后是否连接
*/
public boolean isWiFiCutoverFistConnect(String WiFiAlias) {
long time = mMMKV.decodeLong(WiFiAlias, 0);
return !TimeUtils.isTodayTime(time);
}
}

View File

@@ -12,42 +12,40 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.base.BaseApplication;
import com.aoleyun.sn.bean.AppListInfo;
import com.aoleyun.sn.bean.Appground;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.BrowserBookmarks;
import com.aoleyun.sn.bean.BrowserData;
import com.aoleyun.sn.bean.ForceDownloadBean;
import com.aoleyun.sn.bean.ForceDownloadData;
import com.aoleyun.sn.bean.NetAndLaunchBean;
import com.aoleyun.sn.bean.PoweroffBean;
import com.aoleyun.sn.bean.SnRunLog;
import com.aoleyun.sn.bean.WiFiAlias;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.network.api.newapi.GetPublicIPApi;
import com.aoleyun.sn.network.api.newapi.SnTimeControlApi;
import com.aoleyun.sn.network.api.newapi.TopAppControlApi;
import com.aoleyun.sn.service.LogcatService;
import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.ApkUtils;
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.TimeUtils;
import com.aoleyun.sn.utils.URLUtils;
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.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import com.aoleyun.sn.base.BaseApplication;
import com.aoleyun.sn.bean.AppListInfo;
import com.aoleyun.sn.bean.BrowserBookmarks;
import com.aoleyun.sn.bean.BrowserData;
import com.aoleyun.sn.bean.ForceDownloadBean;
import com.aoleyun.sn.bean.ForceDownloadData;
import com.aoleyun.sn.utils.CacheUtils;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.URLUtils;
import com.aoleyun.sn.bean.Appground;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.NetAndLaunchBean;
import com.aoleyun.sn.network.api.newapi.SnTimeControlApi;
import com.aoleyun.sn.network.api.newapi.TopAppControlApi;
import com.aoleyun.sn.network.api.newapi.UpdateDeviceInfoApi;
import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.ForegroundAppUtil;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.TimeUtils;
import com.aoleyun.sn.utils.Utils;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushManager;
import com.tencent.mmkv.MMKV;
@@ -59,14 +57,14 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.ResponseBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
//import static com.aoleyun.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
@@ -837,10 +835,10 @@ public class HTTPInterface {
.client(NetInterfaceManager.getInstance().getOkHttpClient())
.baseUrl(UrlAddress.SHOUHU_CITYJSON)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build();
GetPublicIPApi getPublicIPApi = retrofit.create(GetPublicIPApi.class);
getPublicIPApi.getJpushTags()
retrofit.create(GetPublicIPApi.class)
.getPublicIP()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseBody>() {

View File

@@ -3,6 +3,7 @@ package com.aoleyun.sn.network;
import android.annotation.SuppressLint;
import android.content.Context;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import com.alibaba.fastjson.JSONObject;
@@ -72,25 +73,34 @@ import com.aoleyun.sn.utils.Utils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.trello.rxlifecycle2.LifecycleProvider;
import com.trello.rxlifecycle2.android.ActivityEvent;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushManager;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.LifecycleProvider;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
import okhttp3.Cache;
import okhttp3.Interceptor;
import okhttp3.MediaType;
@@ -102,7 +112,7 @@ import okhttp3.RequestBody;
import okhttp3.Response;
import okhttp3.ResponseBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
public class NetInterfaceManager {
@@ -113,8 +123,15 @@ public class NetInterfaceManager {
private Context mContext;
private Retrofit mRetrofit;
private OkHttpClient okHttpClient;
private MMKV mMMKV = MMKV.defaultMMKV();
private final ConcurrentHashMap<String, Long> requestIdsMap = new ConcurrentHashMap<>();
private static final long ONE_MINUTE_TIME = 60 * 1000;
private static final long TEN_MINUTE_TIME = ONE_MINUTE_TIME * 10;
private static final long HALF_HOUR_TIME = TEN_MINUTE_TIME * 3;
private static final long ONE_HOUR_TIME = HALF_HOUR_TIME * 2;
//超时时间
private static int timeOut = 5;
// 缓存文件最大限制大小20M
@@ -126,58 +143,6 @@ public class NetInterfaceManager {
private NetInterfaceManager(Context context) {
this.mContext = context;
if (okHttpClient == null) {
Interceptor myHttpInterceptor = new Interceptor() {
@NotNull
@Override
public Response intercept(@NotNull Chain chain) throws IOException {
Request request = chain.request();
String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString());
Response response = chain.proceed(request); //准备返回Response
// try {
// response.close();
// response = chain.proceed(request);
// } catch (Exception e) {
// //异常的返回也是完成Http请求。在这里移除请求登记
// if (!TextUtils.isEmpty(e.toString()) && e.toString().contains(NetInterfaceManager.CUSTOM_REPEAT_REQ_PROTOCOL)) {
// Log.e("REPEAT-REQUEST", "intercept: " + e.getMessage());
// Log.e("REPEAT-REQUEST", "移除请求1:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url());
// } else {
// requestIdsMap.remove(requestKey);
// }
// throw e;
// }
synchronized (requestIdsMap) {
requestIdsMap.remove(requestKey); //在这里移除正常的请求登记
Log.e("REPEAT-REQUEST", "移除请求2:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url());
}
return response;
}
};
Interceptor mRequestInterceptor = new Interceptor() {
@NotNull
@Override
public Response intercept(@NotNull Chain chain) throws IOException {
Request request = chain.request();
//拦截处理重复的HTTP 请求,类似 防止快速点击按钮去重 可以不去处理了,全局统一处理
String requestKey = MD5Util.getUpperMD5Str(request.method() + request.url().toString());
synchronized (requestIdsMap) {
if (requestIdsMap.get(requestKey) == null) {
// Log.e("REPEAT-REQUEST", "intercept: " + requestIdsMap);
requestIdsMap.put(requestKey, System.currentTimeMillis());
Log.e("REPEAT-REQUEST", "注册请求:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url());
} else {
//如果是重复的请求,抛出一个自定义的错误,这个错误大家根据自己的业务定义吧
Log.e("REPEAT-REQUEST", "重复请求:" + requestKey + " --- " + Thread.currentThread().getName() + " URL = " + request.url());
return new Response.Builder()
.protocol(Protocol.get(CUSTOM_REPEAT_REQ_PROTOCOL))
.request(request) //multi thread
.build();
}
}
Response response = chain.proceed(request);
return response;
}
};
Interceptor interceptor = new Interceptor() {
@NotNull
@Override
@@ -217,8 +182,6 @@ public class NetInterfaceManager {
builder.readTimeout(timeOut, TimeUnit.SECONDS);// 设置读取数据超时时间
builder.retryOnConnectionFailure(true);// 设置进行连接失败重试
builder.addInterceptor(interceptor);
// builder.addInterceptor(myHttpInterceptor);
// builder.addNetworkInterceptor(mRequestInterceptor);
// 设置缓存文件路径
String cacheDirectory = mContext.getExternalCacheDir().getAbsolutePath() + "/OkHttpCache";
@@ -232,7 +195,7 @@ public class NetInterfaceManager {
.client(okHttpClient)
.baseUrl(BuildConfig.ROOT_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build();
}
}
@@ -592,10 +555,17 @@ public class NetInterfaceManager {
void onComplete();
}
public void getLockedState(LifecycleProvider<ActivityEvent> provider, ObserverCallback callback) {
private static final String GET_LOCKED_STATE_TIME = "getLockedState_key";
public void getLockedState(BehaviorSubject<ActivityEvent> provider, ObserverCallback callback) {
long lastTime = mMMKV.decodeLong(GET_LOCKED_STATE_TIME, 0);
if (System.currentTimeMillis() - ONE_MINUTE_TIME < lastTime) {
callback.onComplete();
return;
}
NetInterfaceManager.getInstance()
.getDevicesLockedStateObservable()
.compose(provider.bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(provider, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -605,6 +575,7 @@ public class NetInterfaceManager {
@Override
public void onNext(@NonNull BaseResponse response) {
mMMKV.encode(GET_LOCKED_STATE_TIME, System.currentTimeMillis());
Log.e(TAG + ":" + "getLockedState", "onNext: " + response);
if (response.code == OK) {
JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
@@ -646,9 +617,78 @@ public class NetInterfaceManager {
});
}
public void setPushTags(BehaviorSubject<ActivityEvent> provider, ObserverCallback callback) {
NetInterfaceManager.getInstance()
.getJpushTagsObservable()
.compose(RxLifecycle.bindUntilEvent(provider, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e(TAG + ":" + "setPushTags", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse response) {
if (response.code == OK) {
JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
String batch = jsonObject.get("batch").getAsString();
Log.e(TAG + ":" + "setPushTags", "onNext: " + batch);
if (!TextUtils.isEmpty(batch)) {
Set set = new HashSet();
set.add(batch);
JGYUtils.getInstance().getAppPlatform(new JGYUtils.GetAppPlatformCallback() {
@Override
public void AppPlatform(int platform) {
if (platform == JGYUtils.MTKPlatform) {
set.add(JGYUtils.MTKTag);
} else if (platform == JGYUtils.ZhanruiPlatform) {
set.add(JGYUtils.ZhanruiTag);
}
}
});
Set<String> tagsSet = new HashSet<>(set);
XGPushManager.clearAndAppendTags(mContext, "clearAndAppendTags :" + System.currentTimeMillis(), tagsSet, new XGIOperateCallback() {
@Override
public void onSuccess(Object o, int i) {
Log.e("setPushTags", "onSuccess: " + o);
}
@Override
public void onFail(Object o, int i, String s) {
Log.e("setPushTags", "onFail: " + o);
}
});
// setTag(set);
} else {
Log.e(TAG + ":" + "setPushTags", "onNext: " + "batch empty");
}
} else {
Log.e(TAG + ":" + "setPushTags", "onNext: " + response.toString());
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "setPushTags", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onComplete() {
Log.e(TAG + ":" + "setPushTags", "onComplete: ");
}
});
}
private static final String UPDATE_DEVICEINFO_TIME = "updateDeviceInfo_key";
@SuppressLint("NewApi")
public void updateDeviceInfo(ObserverCallback callback) {
long lastTime = mMMKV.decodeLong(UPDATE_DEVICEINFO_TIME, 0);
if (System.currentTimeMillis() - TEN_MINUTE_TIME < lastTime) {
callback.onComplete();
return;
}
String address = String.valueOf(SPUtils.get(mContext, "AmapAddress", "-"));
if ("-".equals(address)) {
address = (String) SPUtils.get(mContext, "AmapError", "-");
@@ -677,6 +717,7 @@ public class NetInterfaceManager {
@Override
public void onNext(BaseResponse baseResponse) {
mMMKV.encode(UPDATE_DEVICEINFO_TIME, System.currentTimeMillis());
callback.onNext(baseResponse);
Log.e("updateDeviceInfo", "上传的结果" + baseResponse.toString());
}
@@ -772,4 +813,6 @@ public class NetInterfaceManager {
}
});
}
}

View File

@@ -2,14 +2,12 @@ package com.aoleyun.sn.network;
import com.aoleyun.sn.BuildConfig;
import rxhttp.wrapper.annotation.DefaultDomain;
/**
* @author Administrator
*/
public class UrlAddress {
/*根网址*/
@DefaultDomain
public static final String HTTP_TAG_HEAD_NEW = BuildConfig.ROOT_URL;

View File

@@ -2,7 +2,7 @@ package com.aoleyun.sn.network.api;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;

View File

@@ -1,6 +1,6 @@
package com.aoleyun.sn.network.api;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api;
import com.aoleyun.sn.bean.ForceDownloadBean;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api;
import com.aoleyun.sn.bean.NetAndLaunchBean;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -1,6 +1,6 @@
package com.aoleyun.sn.network.api;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;

View File

@@ -2,8 +2,7 @@ package com.aoleyun.sn.network.api;
import com.aoleyun.sn.bean.BaseResponse;
import io.reactivex.Observable;
import okhttp3.ResponseBody;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -7,7 +7,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -4,7 +4,7 @@ import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.BrowserBookmarks;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -4,7 +4,7 @@ import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.BrowserData;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -6,7 +6,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -4,7 +4,7 @@ import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.DefaultApp;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -6,7 +6,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -1,6 +1,6 @@
package com.aoleyun.sn.network.api.newapi;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;

View File

@@ -2,7 +2,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -1,6 +1,6 @@
package com.aoleyun.sn.network.api.newapi;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;

View File

@@ -6,7 +6,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.ResponseBody;
import retrofit2.http.GET;
import retrofit2.http.Query;
@@ -17,5 +17,5 @@ import retrofit2.http.Query;
*/
public interface GetPublicIPApi {
@GET(UrlAddress.SHOUHU_CITYJSON)
Observable<ResponseBody> getJpushTags();
Observable<ResponseBody> getPublicIP();
}

View File

@@ -4,7 +4,7 @@ import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.SnRunLog;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -6,7 +6,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Multipart;
import retrofit2.http.POST;

View File

@@ -6,7 +6,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;

View File

@@ -7,7 +7,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;

View File

@@ -4,7 +4,7 @@ import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.LogoImg;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -5,7 +5,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.io.File;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -4,7 +4,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.BaseResponse;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -5,7 +5,7 @@ import com.aoleyun.sn.network.UrlAddress;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import okhttp3.MultipartBody;
import retrofit2.http.Field;
import retrofit2.http.Multipart;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -4,7 +4,7 @@ import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.StudentsInfo;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;

View File

@@ -3,7 +3,7 @@ package com.aoleyun.sn.network.api.newapi;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.network.UrlAddress;
import io.reactivex.Observable;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.POST;

View File

@@ -13,18 +13,19 @@ import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.BootManager;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.TimeUtils;
import com.aoleyun.sn.utils.Utils;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class BootReceiver extends BroadcastReceiver {
private static String TAG = BootReceiver.class.getSimpleName() + ":myappstore";
public static final String BOOT_COMPLETED = "com.aoleyun.sn.intent.action.BOOT_COMPLETED";
public static final String BOOT_COMPLETED = "aoleyun.intent.action.BOOT_COMPLETED";
static {
getLockedState();
@@ -43,7 +44,7 @@ public class BootReceiver extends BroadcastReceiver {
public void onNext(Long aLong) {
Log.e("getLockedState", "onNext: ");
if (MainService.mPresenter != null) {
MainService.mPresenter.getLockedState();
// MainService.mPresenter.getLockedState();
Log.e("getLockedState", "mPresenter: " + "getLockedState");
} else {
Log.e("getLockedState", "mPresenter is NULL");
@@ -76,10 +77,10 @@ public class BootReceiver extends BroadcastReceiver {
break;
case Intent.ACTION_BOOT_COMPLETED:
if ((int) SPUtils.get(context, CommonConfig.FIRST_STARTUP, 0) == 0) {
LogDBManager.getInstance().creatRebootLog("首次启动", Utils.transferLongToDate(System.currentTimeMillis()));
LogDBManager.getInstance().creatRebootLog("首次启动", TimeUtils.transferLongToDate(System.currentTimeMillis()));
SPUtils.put(context, CommonConfig.FIRST_STARTUP, 1);
} else {
LogDBManager.getInstance().creatRebootLog("设备重启", Utils.transferLongToDate(System.currentTimeMillis()));
LogDBManager.getInstance().creatRebootLog("设备重启", TimeUtils.transferLongToDate(System.currentTimeMillis()));
}
Intent intent1 = new Intent(context, CheckNetActivity.class);
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

View File

@@ -21,11 +21,11 @@ import com.aoleyun.sn.utils.SaveListUtils;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.Observer;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class NewAppReceiver extends BroadcastReceiver {
private static final String TAG = NewAppReceiver.class.getSimpleName();
@@ -71,9 +71,7 @@ public class NewAppReceiver extends BroadcastReceiver {
ApkUtils.addShortcut(context);
ApkUtils.RemoveTask(context, packageName);
}
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
bootIntent.setComponent(new ComponentName(PackageNames.APPSTORE, PackageNames.APP_STORE_BOOTRECEIVER));
context.sendBroadcast(bootIntent);
JGYUtils.getInstance().wakeUpAppstore();
//启动教官壹
}
newAppListener.setNewAppListener(packageName);
@@ -134,7 +132,7 @@ public class NewAppReceiver extends BroadcastReceiver {
HTTPInterface.getAppLimit(mContext);
// HTTPInterface.getAppinsideWeb(mContext, () -> Log.e(TAG, "onNext: setAPPinsideWebsite"));
String oldDesktop = (String) SPUtils.get(mContext, "default_launcher", "");
if (s.equals(oldDesktop)){
if (s.equals(oldDesktop)) {
ApkUtils.openPackage(mContext, s);
}
}

View File

@@ -1,5 +1,6 @@
package com.aoleyun.sn.rlog;
import com.aoleyun.sn.utils.TimeUtils;
import com.aoleyun.sn.utils.Utils;
import java.io.Serializable;
@@ -64,7 +65,7 @@ public class LogBean implements Serializable {
public String toLogString() {
return "执行代码:" + code
+ ",时间: " + Utils.transferLongToDate(timestamp)
+ ",时间: " + TimeUtils.transferLongToDate(timestamp)
+ ",事件: " + event
+ ",操作: " + operate
+ ",内容: " + content

View File

@@ -21,47 +21,47 @@ import androidx.annotation.Nullable;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.amap.api.location.AMapLocationClient;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.KeepAliveConnection;
import com.aoleyun.sn.base.BaseApplication;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.manager.AmapManager;
import com.aoleyun.sn.network.HTTPInterface;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.api.newapi.GetLockStateApi;
import com.aoleyun.sn.network.api.newapi.SendScreenStatusApi;
import com.aoleyun.sn.receiver.BootReceiver;
import com.aoleyun.sn.receiver.NewAppReceiver;
import com.aoleyun.sn.rlog.LogDBManager;
import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.ServiceAliveUtils;
import com.aoleyun.sn.utils.ToastUtil;
import com.aoleyun.sn.utils.Utils;
import com.aoleyun.sn.utils.XAPKUtils;
import com.arialyy.annotations.Download;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.arialyy.aria.core.task.DownloadTask;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.manager.AmapManager;
import com.aoleyun.sn.network.HTTPInterface;
import com.aoleyun.sn.network.api.newapi.GetLockStateApi;
import com.aoleyun.sn.receiver.BootReceiver;
import com.aoleyun.sn.receiver.NewAppReceiver;
import com.aoleyun.sn.utils.JGYUtils;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.XAPKUtils;
import com.aoleyun.sn.KeepAliveConnection;
import com.aoleyun.sn.base.BaseApplication;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.ServiceAliveUtils;
import com.aoleyun.sn.utils.ToastUtil;
import com.aoleyun.sn.utils.Utils;
import java.io.IOException;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.ResponseBody;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.adapter.rxjava3.RxJava3CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;
@@ -247,29 +247,17 @@ public class GuardService extends Service {
aMapLocationClient.stopLocation();
aMapLocationClient.startLocation();
getLockState("2", String.valueOf(time));
// if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) {
// String statusbarStatus = "qch_hide_statusBar";
// Intent navIntent = new Intent(statusbarStatus).setPackage("com.android.systemui");
// context.sendBroadcast(navIntent);
// }
sendScreenStatus(1);
}
break;
case Intent.ACTION_SCREEN_OFF: {
HTTPInterface.getAppLimit(GuardService.this);
// HTTPInterface.getAppLimit(GuardService.this);
long time = System.currentTimeMillis();
getLockState("1", String.valueOf(time));
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Intent intent1 = new Intent(BootReceiver.BOOT_COMPLETED);
intent1.setComponent(new ComponentName(PackageNames.APPSTORE, PackageNames.APP_STORE_BOOTRECEIVER));
sendBroadcast(intent1);
JGYUtils.getInstance().wakeUpAppstore();
JGYUtils.getInstance().deleteScreenshots();
}
// if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) {
// String statusbarStatus = "qch_show_statusBar";
// Intent navIntent = new Intent(statusbarStatus).setPackage("com.android.systemui");
// context.sendBroadcast(navIntent);
// }
sendScreenStatus(2);
}
break;
@@ -322,7 +310,7 @@ public class GuardService extends Service {
.client(NetInterfaceManager.getInstance().getOkHttpClient())
.baseUrl(BuildConfig.SCREEN_BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addCallAdapterFactory(RxJava3CallAdapterFactory.create())
.build();
SendScreenStatusApi sendScreenStatusApi = retrofit.create(SendScreenStatusApi.class);
sendScreenStatusApi.sendScreenStatus(NetInterfaceManager.HTTP_KEY, Utils.getSerial(), status)
@@ -355,8 +343,9 @@ public class GuardService extends Service {
if (JGYUtils.isOfficialVersion()) {
return;
}
GetLockStateApi getLockState = NetInterfaceManager.getInstance().getLockState();
getLockState.getLockState(Utils.getSerial(), status, time)
NetInterfaceManager.getInstance()
.getLockState()
.getLockState(Utils.getSerial(), status, time)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseBody>() {

View File

@@ -25,10 +25,10 @@ import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;

View File

@@ -1,6 +1,5 @@
package com.aoleyun.sn.service.main;
import android.graphics.Bitmap;
import android.view.View;
import com.aoleyun.sn.base.BasePresenter;
@@ -9,12 +8,10 @@ import com.google.gson.JsonObject;
public class MainSContact {
public interface Presenter extends BasePresenter<MainView> {
//设置二维码
void getQRImage(String mac);
//获取学生信息
void getStudesInfo();
//获取设备锁定状态
void getLockedState();
void getLockedState(String key);
//是否第一次联网
void getFirstConnect();
//关闭所有功能
@@ -27,7 +24,7 @@ public class MainSContact {
void getSnTimeControl();
//获取电子书包激活码
void getEBagCode();
//设置击关推送别名
//设置极光推送别名
void setJpushAlias();
//设置极光推送平台标签
void setJpushPlatformTags(int platform);
@@ -96,18 +93,6 @@ public class MainSContact {
}
public interface MainView extends BaseView {
//获取二维码
void setQRImage(Bitmap qrImage);
//设置批次信息
void setBatchText(String text, int visibility);
//设置班级信息
void setClassText(String text, int visibility);
//设置学号信息
void setNumberText(String text, int visibility);
//设置姓名信息
void setNameText(String text, int visibility);
//设置头像
void setHead(String url);
//获取设备锁定状态
void setLockedState(boolean loocked);
//是否第一次联网
@@ -120,7 +105,7 @@ public class MainSContact {
void getSnTimeControlFinish();
//获取电子书包激活码
void getEBagCodeFinish();
//设置击关推送别名
//设置极光推送别名
void setAliasFinish();
//设置极光推送平台标签
void setJpushPlatformTagsFinish();

View File

@@ -48,8 +48,8 @@ import com.google.gson.reflect.TypeToken;
import com.tencent.android.tpush.XGIOperateCallback;
import com.tencent.android.tpush.XGPushManager;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle2.LifecycleProvider;
import com.trello.rxlifecycle2.android.ActivityEvent;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import java.io.IOException;
import java.lang.reflect.Type;
@@ -58,11 +58,12 @@ import java.util.HashSet;
import java.util.List;
import java.util.Set;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.annotations.NonNull;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
import okhttp3.ResponseBody;
//import static com.aoleyun.sn.jpush.TagAliasOperatorHelper.ACTION_SET;
@@ -77,6 +78,8 @@ public class MainSPresenter implements MainSContact.Presenter {
private static final String TAG = MainSPresenter.class.getSimpleName();
private MainSContact.MainView mView;
private Context mContext;
private MMKV mMMKV = MMKV.defaultMMKV();
public static final String GET_SETTING_FINISH_TIME = "GET_SETTING_FINISH_TIME";
@@ -85,14 +88,14 @@ public class MainSPresenter implements MainSContact.Presenter {
private final String DEFAULT_INFO = "暂无信息";
private final int OK = 200;
private LifecycleProvider<ActivityEvent> provider;
private BehaviorSubject<ActivityEvent> lifecycle;
public void setProvider(LifecycleProvider<ActivityEvent> provider) {
this.provider = provider;
public void setLifecycle(BehaviorSubject<ActivityEvent> lifecycle) {
this.lifecycle = lifecycle;
}
public LifecycleProvider<ActivityEvent> getProvider() {
return provider;
public BehaviorSubject<ActivityEvent> getLifecycle() {
return lifecycle;
}
public MainSPresenter(Context context) {
@@ -114,35 +117,14 @@ public class MainSPresenter implements MainSContact.Presenter {
this.mView = null;
}
String key = "0123456789ABCDEF";
@Override
public void getQRImage(String mac) {
Log.e(TAG, "getQRImage: " + mac);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("sn", Utils.getSerial());
jsonObject.addProperty("mac", mac);
String json = jsonObject.toString();
String content = mac;
try {
content = CXAESUtil.encrypt(key, json);
Log.e(TAG, "getQRImage: " + content);
} catch (Exception e) {
Log.e(TAG, "getQRImage: " + e.getMessage());
e.printStackTrace();
}
mView.setQRImage(JGYUtils.getInstance().createQRImage(content, 300, 300));
}
/**
* 通过sn获取用户信息
*/
@Override
public void getStudesInfo() {
setState();
NetInterfaceManager.getInstance()
.getStudesInfoObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<StudentsInfo>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -160,38 +142,28 @@ public class MainSPresenter implements MainSContact.Presenter {
String batch = studentsInfoBaseResponse.data.getBatch();
String head_img = studentsInfoBaseResponse.data.getHead_img();
if (TextUtils.isEmpty(sno)) {
mView.setNumberText("", View.GONE);
SPUtils.put(mContext, CommonConfig.STUDENT_ID, DEFAULT_INFO);
} else {
mView.setNumberText(sno, View.VISIBLE);
SPUtils.put(mContext, CommonConfig.STUDENT_ID, sno);
}
if (TextUtils.isEmpty(realname)) {
mView.setNameText("", View.GONE);
SPUtils.put(mContext, CommonConfig.REALNAME, DEFAULT_INFO);
} else {
mView.setNameText(realname, View.VISIBLE);
SPUtils.put(mContext, CommonConfig.REALNAME, realname);
}
if (TextUtils.isEmpty(classes)) {
mView.setClassText("", View.GONE);
SPUtils.put(mContext, CommonConfig.CLASS_NAME, DEFAULT_INFO);
} else {
mView.setClassText(classes, View.VISIBLE);
SPUtils.put(mContext, CommonConfig.CLASS_NAME, classes);
}
if (TextUtils.isEmpty(batch)) {
mView.setBatchText("", View.GONE);
SPUtils.put(mContext, CommonConfig.BATCH_NAME, DEFAULT_INFO);
} else {
mView.setBatchText(batch, View.VISIBLE);
SPUtils.put(mContext, CommonConfig.BATCH_NAME, batch);
}
if (TextUtils.isEmpty(head_img)) {
mView.setHead("");
SPUtils.put(mContext, CommonConfig.HEAD_IMG, "");
} else {
mView.setHead(head_img);
SPUtils.put(mContext, CommonConfig.HEAD_IMG, head_img);
}
@@ -207,76 +179,21 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "getStudesInfo", "onError: " + e.getMessage());
setState();
onComplete();
}
@Override
public void onComplete() {
//如果是解锁状态就隐藏,锁定就显示缓存
if (Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 0) == 1) {
mView.setNumberText("", View.GONE);
mView.setNameText("", View.GONE);
mView.setClassText("", View.GONE);
mView.setBatchText("", View.GONE);
}
Log.e(TAG + ":" + "getStudesInfo", "onComplete: ");
}
});
}
private void setState() {
String batch = (String) SPUtils.get(mContext, CommonConfig.BATCH_NAME, DEFAULT_INFO);
if (TextUtils.isEmpty(batch) || batch.equalsIgnoreCase(DEFAULT_INFO)) {
mView.setBatchText("", View.GONE);
} else {
mView.setBatchText(batch, View.VISIBLE);
}
String classes = (String) SPUtils.get(mContext, CommonConfig.CLASS_NAME, DEFAULT_INFO);
if (TextUtils.isEmpty(classes) || classes.equalsIgnoreCase(DEFAULT_INFO)) {
mView.setClassText("", View.GONE);
} else {
mView.setClassText(classes, View.VISIBLE);
}
String sno = (String) SPUtils.get(mContext, CommonConfig.STUDENT_ID, DEFAULT_INFO);
if (TextUtils.isEmpty(sno) || sno.equalsIgnoreCase(DEFAULT_INFO)) {
mView.setNumberText("", View.GONE);
} else {
mView.setNumberText(sno, View.VISIBLE);
}
String realname = (String) SPUtils.get(mContext, CommonConfig.REALNAME, DEFAULT_INFO);
if (TextUtils.isEmpty(realname) || realname.equalsIgnoreCase(DEFAULT_INFO)) {
mView.setNameText("", View.GONE);
} else {
mView.setNameText(realname, View.VISIBLE);
}
String head_img = (String) SPUtils.get(mContext, CommonConfig.HEAD_IMG, DEFAULT_INFO);
if (TextUtils.isEmpty(head_img) || head_img.equalsIgnoreCase(DEFAULT_INFO)) {
mView.setHead("");
} else {
mView.setHead(head_img);
}
}
private long lastgetLockedTime;
private long one_minute = 1000 * 60;
@Override
public void getLockedState() {
MMKV mmkv = MMKV.defaultMMKV();
lastgetLockedTime = mmkv.decodeLong(MainSPresenter.GET_SETTING_FINISH_TIME);
Log.e(TAG, "getLockedState: " + lastgetLockedTime);
if (System.currentTimeMillis() - lastgetLockedTime < one_minute) {
Log.e(TAG, "getLockedState: lastgetLockedTime = " + lastgetLockedTime);
return;
}
// lastgetLockedTime = System.currentTimeMillis();
public void getLockedState(String key) {
NetInterfaceManager.getInstance()
.getDevicesLockedStateObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -285,6 +202,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void onNext(@NonNull BaseResponse response) {
mMMKV.encode(key, System.currentTimeMillis());
requestSucceeded = true;
Log.e(TAG + ":" + "getLockedState", "onNext: " + JSONObject.toJSONString(response));
if (response.code == OK) {
@@ -302,7 +220,6 @@ public class MainSPresenter implements MainSContact.Presenter {
}
Settings.System.putInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 0);
} else {
// SysSettingUtils.setEnableSetting(mContext);
Settings.System.putInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 1);
}
mView.setLockedState(locked == 1);
@@ -326,7 +243,6 @@ public class MainSPresenter implements MainSContact.Presenter {
Log.e(TAG + ":" + "getLockedState", "onComplete: ");
}
});
// lastgetLockedTime = System.currentTimeMillis();
}
/**
@@ -367,7 +283,7 @@ public class MainSPresenter implements MainSContact.Presenter {
NetInterfaceManager.getInstance()
.sendMACAddressObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -406,57 +322,27 @@ public class MainSPresenter implements MainSContact.Presenter {
mView.updateDeviceInfoFinish();
return;
}
updateDevicesInfo(mContext);
mView.updateDeviceInfoFinish();
}
NetInterfaceManager.getInstance().updateDeviceInfo(new NetInterfaceManager.ObserverCallback() {
@Override
public void onSubscribe(Disposable d) {
@SuppressLint("NewApi")
synchronized private void updateDevicesInfo(Context context) {
String address = String.valueOf(SPUtils.get(context, "AmapAddress", "-"));
if ("-".equals(address)) {
address = (String) SPUtils.get(context, "AmapError", "-");
}
String longitude = String.valueOf(SPUtils.get(context, "longitude", "0"));
String latitude = String.valueOf(SPUtils.get(context, "latitude", "0"));
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("address", address);
jsonObject.addProperty("longitude", longitude);
jsonObject.addProperty("latitude", latitude);
String add = jsonObject.toString();
Log.e(TAG, "updateDevicesInfo: " + add);
NetInterfaceManager.getInstance().getUpdateDeviceInfo()
.updateDeviceInfo(
Utils.getSerial(),
NetInterfaceManager.HTTP_KEY,
Utils.getMachine(context),
Utils.getHardware(context),
add)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e(TAG + ":" + "updateDevicesInfo", "onSubscribe: ");
}
}
@Override
public void onNext(@NonNull BaseResponse baseResponse) {
requestSucceeded = true;
Log.e(TAG + ":" + "updateDevicesInfo", "onNext: " + baseResponse);
}
@Override
public void onNext(BaseResponse response) {
requestSucceeded = true;
}
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "updateDevicesInfo", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onError(Throwable e) {
@Override
public void onComplete() {
Log.e(TAG + ":" + "updateDevicesInfo", "onComplete: ");
}
});
}
@Override
public void onComplete() {
mView.updateDeviceInfoFinish();
}
});
}
@Override
@@ -467,7 +353,7 @@ public class MainSPresenter implements MainSContact.Presenter {
}
NetInterfaceManager.getInstance()
.getSnTimeObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -518,7 +404,7 @@ public class MainSPresenter implements MainSContact.Presenter {
public void getEBagCode() {
NetInterfaceManager.getInstance()
.getEBagCodeControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -555,30 +441,14 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void setJpushAlias() {
// JPushInterface.init(mContext);
// SetAlias();
// String rid = JPushInterface.getRegistrationID(mContext);
// if (!TextUtils.isEmpty(rid)) {
// Log.e(TAG + ":" + "setJpushAlias", "RegId:" + rid);
// }
// JPushInterface.getAlias(mContext, new Random().nextInt(100));
mView.setAliasFinish();
}
// private void SetAlias() {
// TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean();
// tagAliasBean.action = ACTION_SET;
// sequence++;
// tagAliasBean.alias = Utils.getSerial();
// tagAliasBean.isAliasAction = true;
// TagAliasOperatorHelper.getInstance().handleAction(mContext, sequence, tagAliasBean);
// }
@Override
public void setPushTags() {
NetInterfaceManager.getInstance()
.getJpushTagsObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -648,15 +518,6 @@ public class MainSPresenter implements MainSContact.Presenter {
mView.setJpushPlatformTagsFinish();
}
// private void setTag(Set set) {
// TagAliasOperatorHelper.TagAliasBean tagAliasBean = new TagAliasOperatorHelper.TagAliasBean();
// tagAliasBean.action = ACTION_SET;
// sequence++;
// tagAliasBean.tags = set;
// tagAliasBean.isAliasAction = false;
// TagAliasOperatorHelper.getInstance().handleAction(mContext, sequence, tagAliasBean);
// }
@Override
public void checkStoreUpdate() {
checkUpdateStore();
@@ -669,7 +530,7 @@ public class MainSPresenter implements MainSContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -712,7 +573,7 @@ public class MainSPresenter implements MainSContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -753,7 +614,7 @@ public class MainSPresenter implements MainSContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -794,7 +655,7 @@ public class MainSPresenter implements MainSContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -835,7 +696,7 @@ public class MainSPresenter implements MainSContact.Presenter {
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -868,68 +729,9 @@ public class MainSPresenter implements MainSContact.Presenter {
});
}
long buttonCheckUpdateTime = 0;
@Override
public void buttonCheckUpdate(View view) {
// if ((System.currentTimeMillis() - buttonCheckUpdateTime) < 10000) {
// buttonCheckUpdateTime = System.currentTimeMillis();
// ToastUtil.show("正在检查更新");
// } else {
// ToastUtil.show("你已经过检查,请稍后再来");
// }
checkUpdateInfo();
}
private void checkUpdateInfo() {
NetInterfaceManager.getInstance()
.getUpdateApi()
.getUpdate(BuildConfig.APPLICATION_ID,
JGYUtils.getInstance().checkAppPlatform())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e(TAG + ":" + "checkUpdateInfo", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse response) {
requestSucceeded = true;
Log.e(TAG + ":" + "checkUpdateInfo", "onNext: " + response);
if (response.code == OK) {
JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject();
long versionCode = jsonObject.get("version_code").getAsLong();
PackageManager pm = mContext.getPackageManager();
PackageInfo info = null;
try {
info = pm.getPackageInfo(BuildConfig.APPLICATION_ID, 0);
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
if (null == info || info.versionCode < versionCode) {
mView.buttonCheckUpdateFinish(true, jsonObject);
} else {
mView.buttonCheckUpdateFinish(false, null);
}
} else {
mView.buttonCheckUpdateFinish(false, null);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e(TAG + ":" + "checkUpdateInfo", "onError: " + e.getMessage());
onComplete();
}
@Override
public void onComplete() {
Log.e(TAG + ":" + "checkUpdateInfo", "onComplete: ");
}
});
}
/**
@@ -939,7 +741,7 @@ public class MainSPresenter implements MainSContact.Presenter {
public void checkTestUpdate() {
NetInterfaceManager.getInstance()
.getTestUpdateObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<List<ForceDownloadData>>>() {
@Override
public void onSubscribe(Disposable d) {
@@ -985,7 +787,7 @@ public class MainSPresenter implements MainSContact.Presenter {
public void getAppLimit() {
NetInterfaceManager.getInstance()
.getAppLimitObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1037,60 +839,11 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getDeviceBatch(String packageList) {
// if (JGYUtils.isOfficialVersion() || TextUtils.isEmpty(packageList)) {
// mView.getDeviceBatchFinished();
// return;
// }
int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, 0);
Log.e(TAG, "getDeviceBatch: " + locked);
if (locked == 0) {
// NetInterfaceManager.getInstance()
// .getBatchObservable()
// .observeOn(Schedulers.io())
// .subscribe(new Observer<ResponseBody>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
// Log.e(TAG+":"+"getDeviceBatch", "onSubscribe: ");
// }
//
// @Override
// public void onNext(@NonNull ResponseBody responseBody) {
// Log.e(TAG+":"+"getDeviceBatch", "onNext: ");
// try {
// String respons = responseBody.string();
// JSONObject jsonObject = JSON.parseObject(respons);
// int code = jsonObject.getInteger("code");
// if (code == OK) {
// String data = jsonObject.getString("data");
// List<Batch> batchList = JSON.parseArray(data, Batch.class);
// if (null != batchList && batchList.size() > 1) {
// Log.e(TAG+":"+"getDeviceBatch", "onNext: " + "deleteOtherApp");
// if (!BuildConfig.DEBUG) {
JGYUtils.getInstance().deleteOtherApp();
// }
// } else {
// Log.e(TAG+":"+"getDeviceBatch", "批次为空");
// Log.e(TAG+":"+"getDeviceBatch", "onNext: respons:" + respons);
// }
// }
// } catch (IOException e) {
// e.printStackTrace();
// }
// }
//
// @Override
// public void onError(@NonNull Throwable e) {
// Log.e(TAG+":"+"getDeviceBatch", "onError: " + e.getMessage());
// onComplete();
// }
//
// @Override
// public void onComplete() {
// Log.e(TAG+":"+"getDeviceBatch", "onComplete: ");
mView.getDeviceBatchFinish();
// }
// });
// mView.getDeviceBatchFinished();
}
}
@@ -1098,7 +851,7 @@ public class MainSPresenter implements MainSContact.Presenter {
public void getForceDownload() {
NetInterfaceManager.getInstance()
.getForceDownloadObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ForceDownloadBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1147,286 +900,14 @@ public class MainSPresenter implements MainSContact.Presenter {
});
}
// TODO: 2021/6/8 使用现有代码会影响浏览器主页管控
// @Override
// public void getBrowserList() {
//// if (JGYUtils.isOfficialVersion()) {
// SetBrowserList();
//// } else {
//// NewSetBrowserList();
//// }
// }
@Override
public void getBrowserList() {
// NetInterfaceManager.getInstance()
//// .getBrowserListSettingObservable()
//// .observeOn(Schedulers.io())
//// .subscribe(new Observer<BaseResponse<BrowserData>>() {
//// @Override
//// public void onSubscribe(@NonNull Disposable d) {
//// Log.e(TAG + ":" + "getBrowserList", "onSubscribe: ");
//// }
////
//// @Override
//// public void onNext(@NonNull BaseResponse<BrowserData> browserDataBaseResponse) {
//// Log.e(TAG + ":" + "getBrowserList", "onNext: ");
//// if (browserDataBaseResponse.code == OK) {
//// String white = browserDataBaseResponse.data.getWhite();
////
//// if (!TextUtils.isEmpty(white)) {
//// String homePage = Settings.System.getString(mContext.getContentResolver(), "homepagURL");
//// if (!TextUtils.isEmpty(homePage) && !white.contains(homePage)) {
//// white += "," + homePage;
//// }
//// boolean whiteList = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", white);
//// Log.e(TAG + ":" + "getBrowserList", "setBrowserList white: " + white + ":" + whiteList);
//// mView.getBrowserListFinished(white);
//// } else {
//// Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", " ");
//// mView.getBrowserListFinished("");
//// }
//// String black = browserDataBaseResponse.data.getBlack();
//// if (!TextUtils.isEmpty(black)) {
//// boolean blackList = Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", black);
//// Log.e(TAG + ":" + "getBrowserList", "setBrowserList black: " + black + ":" + blackList);
//// } else {
//// Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
//// }
//// } else {
//// mView.getBrowserListFinished("");
//// }
//// }
////
//// @Override
//// public void onError(@NonNull Throwable e) {
//// Log.e(TAG + ":" + "getBrowserList", "onError: " + e.getMessage());
//// String whiteURLList = Settings.System.getString(mContext.getContentResolver(), "DeselectBrowserArray");
//// Log.e(TAG + ":" + "getBrowserList", "whiteURLList: " + whiteURLList);
//// mView.getBrowserListFinished(whiteURLList);
//// onComplete();
//// }
////
//// @Override
//// public void onComplete() {
//// Log.e(TAG + ":" + "getBrowserList", "onComplete: ");
//// }
//// });
// //获取书签后会获取黑白名单
Log.e(TAG, "getBrowserList: ");
mView.getBrowserListFinish("");
}
// private void NewSetBrowserList() {
// NetInterfaceManager.getInstance()
// .getBrowserListSettingObservable()
// .observeOn(Schedulers.io())
// .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
// .subscribe(new Observer<BaseResponse<BrowserData>>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
// Log.e(TAG + ":" + "NewSetBrowserList", "onSubscribe: ");
// }
//
// @Override
// public void onNext(@NonNull BaseResponse<BrowserData> browserDataBaseResponse) {
// Log.e(TAG + ":" + "NewSetBrowserList", "onNext: ");
// if (browserDataBaseResponse.code == OK) {
// String white = browserDataBaseResponse.data.getWhite();
// String black = browserDataBaseResponse.data.getBlack();
// if (!TextUtils.isEmpty(white) && !TextUtils.isEmpty(black)) {
// Settings.System.putInt(mContext.getContentResolver(), "qch_website_isBlackWebUrl", 0);
// Settings.System.putString(mContext.getContentResolver(), "BlackBrowserArray", " ");
// //黑白名单同时存在时由以前的逻辑管控
// boolean whiteList = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", white);
// Log.e(TAG + ":" + "setBrowserList", "setBrowserList white: " + white + ":" + whiteList);
// boolean blackList = Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", black);
// Log.e(TAG + ":" + "setBrowserList", "setBrowserList black: " + black + ":" + blackList);
// mView.getBrowserListFinished(white);
// } else if (TextUtils.isEmpty(white)) {
// //设置黑名单
// Settings.System.putInt(mContext.getContentResolver(), "qch_website_isBlackWebUrl", 1);
// Settings.System.putString(mContext.getContentResolver(), "BlackBrowserArray", black);
// //白名单为空由新的管控执行
// mView.getBrowserListFinished("");
// Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
// } else if (TextUtils.isEmpty(black)) {
// Settings.System.putInt(mContext.getContentResolver(), "qch_website_isBlackWebUrl", 0);
// Settings.System.putString(mContext.getContentResolver(), "BlackBrowserArray", " ");
// //黑名单为空由旧的管控执行
// mView.getBrowserListFinished(white);
// Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
// }
// } else {
// //所有置空
// Settings.System.putInt(mContext.getContentResolver(), "qch_website_isBlackWebUrl", 0);
// Settings.System.putString(mContext.getContentResolver(), "BlackBrowserArray", " ");
// mView.getBrowserListFinished("");
// Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
// }
// }
//
// @Override
// public void onError(@NonNull Throwable e) {
// Log.e(TAG + ":" + "NewSetBrowserList", "onError: " + e.getMessage());
// onComplete();
// }
//
// @Override
// public void onComplete() {
// Log.e(TAG + ":" + "NewSetBrowserList", "onComplete: ");
// }
// });
// }
// private void SetBrowserList() {
// NetInterfaceManager.getInstance()
// .getBrowserListSettingObservable()
// .observeOn(Schedulers.io())
// .compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
// .subscribe(new Observer<BaseResponse<BrowserData>>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
// Log.e(TAG + ":" + "SetBrowserList", "onSubscribe: ");
// }
//
// @Override
// public void onNext(@NonNull BaseResponse<BrowserData> browserDataBaseResponse) {
// Settings.System.putInt(mContext.getContentResolver(), "qch_website_isBlackWebUrl", 0);
// Log.e(TAG + ":" + "SetBrowserList", "onNext: ");
// if (browserDataBaseResponse.code == OK) {
// //白名单
// String white = browserDataBaseResponse.data.getWhite();
// if (!TextUtils.isEmpty(white)) {
// String homePage = Settings.System.getString(mContext.getContentResolver(), "homepagURL");
// if (!TextUtils.isEmpty(homePage) && !white.contains(homePage)) {
// white += "," + homePage;
// }
// boolean whiteList = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", white);
// Log.e(TAG + ":" + "SetBrowserList", "setBrowserList white: " + white + " :" + whiteList);
// String black = Settings.System.getString(mContext.getContentResolver(), "qch_webblack_url");
// Log.e(TAG + ":" + "SetBrowserList", "getBrowserList black: " + black);
// mView.getBrowserListFinished(white);
// } else {
// Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", " ");
// mView.getBrowserListFinished("");
// }
// //黑名单
// String black = browserDataBaseResponse.data.getBlack();
// if (!TextUtils.isEmpty(black)) {
// boolean blackList = Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", black);
// Log.e(TAG + ":" + "SetBrowserList", "setBrowserList black: " + black + " :" + blackList);
// String whiteList = Settings.System.getString(mContext.getContentResolver(), "DeselectBrowserArray");
// Log.e(TAG + ":" + "SetBrowserList", "getBrowserList white: " + whiteList);
// } else {
// Settings.System.putString(mContext.getContentResolver(), "qch_webblack_url", " ");
// }
// } else {
// mView.getBrowserListFinished("");
// }
// }
//
// @Override
// public void onError(@NonNull Throwable e) {
// Log.e(TAG + ":" + "SetBrowserList", "onError: " + e.getMessage());
// String whiteURLList = Settings.System.getString(mContext.getContentResolver(), "DeselectBrowserArray");
// Log.e(TAG + ":" + "SetBrowserList", "whiteURLList: " + whiteURLList);
// mView.getBrowserListFinished(whiteURLList);
// }
//
// @Override
// public void onComplete() {
// Log.e(TAG + ":" + "SetBrowserList", "onComplete: ");
// }
// });
// }
@Override
public void getBrowserBookmarks(String whitelist) {
// Log.e(TAG, "getBrowserBookmarks: " + "whitelist: " + whitelist);
// List<String> whiteLists = Arrays.asList(whitelist.split(","));
// NetInterfaceManager.getInstance()
// .getBrowserBookmarksObservable()
// .observeOn(Schedulers.io())
// .subscribe(new Observer<BaseResponse<BrowserBookmarks>>() {
// @Override
// public void onSubscribe(@NonNull Disposable d) {
// Log.e(TAG+":"+"getBrowserBookmarks", "onSubscribe: ");
// }
//
// @Override
// public void onNext(@NonNull BaseResponse<BrowserBookmarks> browserBookmarksBaseResponse) {
// Log.e(TAG+":"+"getBrowserBookmarks", "onNext: ");
// StringBuilder whiteString = new StringBuilder(whitelist);
// if (browserBookmarksBaseResponse.code == OK) {
// //主页不包含白名单添加进去
// String homepagURL = browserBookmarksBaseResponse.data.getHomepage();
//// boolean home = Settings.System.putString(mContext.getContentResolver(), "homepagURL", homepagURL);
//// Log.e(TAG+":"+"getBrowserBookmarks", "onNext: homepagURL: save homepagURL = " + homepagURL);
// if (whiteLists.size() <= 0 || !whiteLists.contains(homepagURL)) {
// whiteString.append(",").append(homepagURL);
// Log.e(TAG+":"+"getBrowserBookmarks ", "homepagURL: " + homepagURL);
// boolean white = Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", whiteString.toString());
// Log.e(TAG+":"+"getBrowserBookmarks", "onNext: homepagURL: add to whiteList = " + whiteString + "write: " + white);
// }
// //主页
// Intent homepag = new Intent("qch_app_brower_homepage");
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// homepag.setPackage("com.android.settings")
// .setPackage("com.android.browser");
// }
// if (!TextUtils.isEmpty(homepagURL)) {
// homepag.putExtra("homepage", homepagURL);
// } else {
// homepag.putExtra("homepage", "Invalid");
// }
// mContext.sendBroadcast(homepag);
//
// //书签
// String labelpage = browserBookmarksBaseResponse.data.getLabelpage();
// Intent websiteBookMark = new Intent("qch_app_brower_website");
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// websiteBookMark.setPackage("com.android.settings")
// .setPackage("com.android.browser");
// }
// if (!TextUtils.isEmpty(labelpage)) {
// websiteBookMark.putExtra("websiteBookMark", labelpage);
// } else {
// websiteBookMark.putExtra("websiteBookMark", "Invalid");
// }
// mContext.sendBroadcast(websiteBookMark);
// } else {
// Intent intent1 = new Intent("qch_app_brower_homepage");
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// intent1.setPackage("com.android.settings")
// .setPackage("com.android.browser");
// }
// intent1.putExtra("homepage", "Invalid");
// mContext.sendBroadcast(intent1);
//
// Settings.System.putString(mContext.getContentResolver(), "homepagURL", "");
// Intent intent2 = new Intent("qch_app_brower_website");
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
// intent2.setPackage("com.android.settings")
// .setPackage("com.android.browser");
// }
// intent2.putExtra("websiteBookMark", "Invalid");
// mContext.sendBroadcast(intent2);
// }
// }
//
// @Override
// public void onError(@NonNull Throwable e) {
// Log.e(TAG+":"+"getBrowserBookmarks", "onError: " + e.getMessage());
// onComplete();
// }
//
// @Override
// public void onComplete() {
// Log.e(TAG+":"+"getBrowserBookmarks", "onComplete: ");
// mView.getBrowserBookmarksFinished();
// }
// });
HTTPInterface.getHomePageBookmarks(mContext, new HTTPInterface.BookmarksCallback() {
@Override
public void onSubscribe() {
@@ -1447,15 +928,6 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void onComplete() {
Log.e(TAG + ":" + "getBrowserBookmarks", "onComplete: ");
// String homepagURL = Settings.System.getString(mContext.getContentResolver(), "homepagURL");
// HashSet<String> hashSet = new HashSet<>(Arrays.asList(whitelist.split(",")));
// hashSet.add(homepagURL);
// String DeselectBrowserArray = String.join(",", hashSet);
// if (Utils.isEmpty(DeselectBrowserArray)) {
// Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", " ");
// } else {
// Settings.System.putString(mContext.getContentResolver(), "DeselectBrowserArray", DeselectBrowserArray);
// }
if (mView != null) {
mView.getBrowserBookmarksFinish();
}
@@ -1487,7 +959,7 @@ public class MainSPresenter implements MainSContact.Presenter {
NetInterfaceManager.getInstance()
.getDesktopIconObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1551,7 +1023,7 @@ public class MainSPresenter implements MainSContact.Presenter {
.getAppAutoStartUpdateAndNetObservable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<NetAndLaunchBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1588,7 +1060,7 @@ public class MainSPresenter implements MainSContact.Presenter {
NetInterfaceManager.getInstance()
.getAppIDControlObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1657,7 +1129,7 @@ public class MainSPresenter implements MainSContact.Presenter {
NetInterfaceManager.getInstance()
.getSystemSettingObservable()
.observeOn(Schedulers.io())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1715,7 +1187,7 @@ public class MainSPresenter implements MainSContact.Presenter {
public void getDefaultApp() {
NetInterfaceManager.getInstance()
.getDefaultAppApi()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<DefaultApp>>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1760,7 +1232,7 @@ public class MainSPresenter implements MainSContact.Presenter {
.getROMApp(NetInterfaceManager.HTTP_KEY, customVersion)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1800,7 +1272,7 @@ public class MainSPresenter implements MainSContact.Presenter {
public void getDeveloper() {
NetInterfaceManager.getInstance()
.getDeveloperControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1848,7 +1320,7 @@ public class MainSPresenter implements MainSContact.Presenter {
}
NetInterfaceManager.getInstance()
.getLogoImgObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<LogoImg>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -1898,7 +1370,7 @@ public class MainSPresenter implements MainSContact.Presenter {
}
NetInterfaceManager.getInstance()
.getTopAppControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(Disposable d) {
@@ -1953,7 +1425,7 @@ public class MainSPresenter implements MainSContact.Presenter {
}
NetInterfaceManager.getInstance()
.getScreenLockObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -2002,7 +1474,7 @@ public class MainSPresenter implements MainSContact.Presenter {
}
NetInterfaceManager.getInstance()
.getDesktopObservable()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
@@ -2058,7 +1530,7 @@ public class MainSPresenter implements MainSContact.Presenter {
public void getPoweroffTime() {
NetInterfaceManager.getInstance()
.getPoweroffTimeControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<List<PoweroffBean>>>() {
@Override
public void onSubscribe(Disposable d) {
@@ -2067,14 +1539,14 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void onNext(BaseResponse<List<PoweroffBean>> listBaseResponse) {
requestSucceeded = true;
Log.e("getPoweroffTime", "onNext: " + listBaseResponse);
MMKV mmkv = MMKV.defaultMMKV();
if (listBaseResponse.code == 200) {
List<PoweroffBean> poweroffBeanList = listBaseResponse.data;
String poweroffTime = new Gson().toJson(poweroffBeanList);
mmkv.encode("poweroffTime", poweroffTime);
mMMKV.encode("poweroffTime", poweroffTime);
} else {
mmkv.encode("PoweroffTime", "");
mMMKV.encode("PoweroffTime", "");
}
}
@@ -2095,7 +1567,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getWiFiPasswd() {
NetInterfaceManager.getInstance().getWiFiControl()
.compose(getProvider().bindUntilEvent(ActivityEvent.DESTROY))
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<List<WiFiAlias>>>() {
@Override
public void onSubscribe(Disposable d) {
@@ -2107,11 +1579,11 @@ public class MainSPresenter implements MainSContact.Presenter {
Log.e("getWiFiPasswd", "onNext: ");
if (listBaseResponse.code == 200) {
WiFiUtils.saveWiFiPasswd(listBaseResponse.data);
MMKV.defaultMMKV().encode("WiFiPassword", JsonParser.parseString(new Gson().toJson(listBaseResponse.data)).toString());
mMMKV.encode("WiFiPassword", JsonParser.parseString(new Gson().toJson(listBaseResponse.data)).toString());
} else {
Log.e("getWiFiPasswd", "onNext: msg = " + listBaseResponse.msg);
WiFiUtils.saveWiFiPasswd(listBaseResponse.data);
MMKV.defaultMMKV().encode("WiFiPassword", "");
mMMKV.encode("WiFiPassword", "");
}
}

View File

@@ -42,6 +42,7 @@ import com.aoleyun.sn.bean.PoweroffBean;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames;
import com.aoleyun.sn.manager.ConnectManager;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.receiver.BootReceiver;
import com.aoleyun.sn.rlog.LogDBManager;
@@ -59,11 +60,11 @@ import com.google.gson.Gson;
import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle2.LifecycleProvider;
import com.trello.rxlifecycle2.LifecycleTransformer;
import com.trello.rxlifecycle2.RxLifecycle;
import com.trello.rxlifecycle2.android.ActivityEvent;
import com.trello.rxlifecycle2.android.RxLifecycleAndroid;
import com.trello.rxlifecycle4.LifecycleProvider;
import com.trello.rxlifecycle4.LifecycleTransformer;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.RxLifecycleAndroid;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
@@ -73,17 +74,19 @@ import java.util.HashSet;
import java.util.List;
import java.util.concurrent.TimeUnit;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.disposables.Disposable;
import io.reactivex.subjects.BehaviorSubject;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.subjects.BehaviorSubject;
public class MainService extends Service implements MainSContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider<ActivityEvent> {
private static final String TAG = MainService.class.getSimpleName();
private String connectKey;
@SuppressLint("StaticFieldLeak")
public static MainSPresenter mPresenter;
private static final String TAG = MainService.class.getSimpleName();
public static boolean netWorkIsRunning = false;
private MMKV mMMKV = MMKV.defaultMMKV();
@@ -96,9 +99,33 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void onConnected(NetworkUtils.NetworkType networkType) {
ToastUtil.betaShow("网络已连接");
Log.e("OnNetworkStatusChanged", "onConnected: " + Utils.getWifiAlias(this));
start.onstar(SystemClock.elapsedRealtime());
String WiFiAlias = Utils.getWifiAlias(this);
Log.e("OnNetworkStatusChanged", "onConnected: " + WiFiAlias);
Utils.getPublicIP(this);
if (ConnectManager.getInstance().isWiFiFistConnect()) {
start.onstar(ConnectManager.WIFI_LAST_CONNECT_TIME);
} else {
if (ConnectManager.getInstance().isWiFiCutoverFistConnect(WiFiAlias)) {
start.onstar(WiFiAlias);
}
}
}
private final BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create();
@Override
public Observable<ActivityEvent> lifecycle() {
return lifecycleSubject.hide();
}
@Override
public <T> LifecycleTransformer<T> bindUntilEvent(ActivityEvent event) {
return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
}
@Override
public <T> LifecycleTransformer<T> bindToLifecycle() {
return RxLifecycleAndroid.bindActivity(lifecycleSubject);
}
private WifiReceiver mWifiReceiver;
@@ -134,7 +161,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
Log.e(TAG, "wifi断开");
LogDBManager.getInstance().creatNetChangeLog("wifi断开", Utils.transferLongToDate(System.currentTimeMillis()));
LogDBManager.getInstance().creatNetChangeLog("wifi断开", TimeUtils.transferLongToDate(System.currentTimeMillis()));
} else if (info.getState().equals(NetworkInfo.State.CONNECTED)) {
WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
@@ -145,13 +172,14 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
Log.e(TAG, "连接到网络 " + newSSID);
if (!oldSSID.equals(newSSID)) {
LogDBManager.getInstance().creatNetChangeLog("", oldSSID + " change to: " + newSSID);
runningTime = SystemClock.elapsedRealtime();
//直接获取数据
mPresenter.getLockedState();
if (ConnectManager.getInstance().isWiFiCutoverFistConnect(newSSID)) {
start.onstar(newSSID);
}
} else {
LogDBManager.getInstance().creatNetChangeLog("接入WiFi",
"connect to: " + newSSID + " time: "
+ Utils.transferLongToDate(System.currentTimeMillis()));
+ TimeUtils.transferLongToDate(System.currentTimeMillis()));
}
mMMKV.encode("WiFiSSID", Utils.getWifiAlias(context));
}
@@ -170,48 +198,32 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
}
}
private final BehaviorSubject<ActivityEvent> lifecycleSubject = BehaviorSubject.create();
@Override
public Observable<ActivityEvent> lifecycle() {
return lifecycleSubject.hide();
}
@Override
public <T> LifecycleTransformer<T> bindUntilEvent(ActivityEvent event) {
return RxLifecycle.bindUntilEvent(lifecycleSubject, event);
}
@Override
public <T> LifecycleTransformer<T> bindToLifecycle() {
return RxLifecycleAndroid.bindActivity(lifecycleSubject);
}
private interface Start {
void onstar(long time);
void onstar(String key);
}
private Start start;
private ObservableOnSubscribe<Long> subscribe = new ObservableOnSubscribe<Long>() {
private ObservableOnSubscribe<String> subscribe = new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter<Long> emitter) throws Exception {
public void subscribe(ObservableEmitter<String> emitter) throws Exception {
start = emitter::onNext;
}
};
private Observer<Long> timeObserver = new Observer<Long>() {
private Observer<String> timeObserver = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Long aLong) {
Log.e("TimeObserver", "onNext: " + aLong);
startCommandTime = runningTime = SystemClock.elapsedRealtime();
public void onNext(String string) {
connectKey = string;
Log.e("TimeObserver", "onNext: " + string);
mPresenter.getFirstConnect();
mPresenter.getLockedState();
mPresenter.getLockedState(string);
}
@Override
@@ -237,10 +249,17 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void onCreate() {
super.onCreate();
Log.e(TAG, "onCreate: ");
lifecycleSubject.onNext(ActivityEvent.CREATE);
mPresenter = new MainSPresenter(this);
mPresenter.attachView(this);
mPresenter.setProvider(this);
mPresenter.setLifecycle(lifecycleSubject);
Observable.create(subscribe)
.throttleFirst(1, TimeUnit.MINUTES)
.subscribe(timeObserver);
Observable.create(timeChangedSubscribe)
.throttleFirst(3, TimeUnit.HOURS)
.subscribe(timeChangedObserver);
if ((int) SPUtils.get(this, CommonConfig.JGY_FIRST_CONNECT, 0) == 0) {
// TODO: 2021/5/26 待底层修改,临时解决办法
Log.e(TAG, "onCreate: " + "Disable All Settings");
@@ -250,29 +269,29 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
if (oldVersionCode < BuildConfig.VERSION_CODE) {
Log.e(TAG, "onCreate: " + "upgrade successful");
} else {
mPresenter.getFirstConnect();
mPresenter.getLockedState();
if (ConnectManager.getInstance().isRebootFistConnect()) {
start.onstar(ConnectManager.REBOOT_LAST_ONNECT_TIME);
}
}
SPUtils.put(this, CommonConfig.SN_VERSIONCODE, BuildConfig.VERSION_CODE);
registerReceivers();
NetworkUtils.registerNetworkStatusChangedListener(this);
addShortcut();
Observable.create(subscribe)
.throttleFirst(3, TimeUnit.HOURS)
.subscribe(timeObserver);
Observable.create(timeChangedSubscribe)
.throttleFirst(3, TimeUnit.HOURS)
.subscribe(timeChangedObserver);
// cleanLauncherCache();
timeChangedStart.onstar(System.currentTimeMillis());
setStatusbar();
//发送设备mac地址和信息
mPresenter.sendMACAddress();
setFloatingWindow(this);
createNotificationChannel();
sendSimpleNotification();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
JGYUtils.getInstance().wakeUpAppstore();
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
@@ -282,24 +301,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
mPresenter.detachView();
}
//执行所有请求的时间
long runningTime;
//MainService上次执行时间
long startCommandTime = 0;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
bootIntent.setComponent(new ComponentName(PackageNames.APPSTORE, PackageNames.APP_STORE_BOOTRECEIVER));
sendBroadcast(bootIntent);
// mPresenter.getFirstConnect();
// mPresenter.getLockedState();
start.onstar(SystemClock.elapsedRealtime());
Log.e(TAG, "onStartCommand: " + (SystemClock.elapsedRealtime() - startCommandTime) + "ms");
return START_STICKY;
}
private void createNotificationChannel() {
// Create the NotificationChannel, but only on API 26+ because
// the NotificationChannel class is new and not in the support library
@@ -703,36 +704,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
}
}
@Override
public void setQRImage(Bitmap qrImage) {
}
@Override
public void setBatchText(String text, int visibility) {
}
@Override
public void setClassText(String text, int visibility) {
}
@Override
public void setNumberText(String text, int visibility) {
}
@Override
public void setNameText(String text, int visibility) {
}
@Override
public void setHead(String url) {
}
@Override
public void setLockedState(boolean loocked) {
Log.e(TAG, "netWorkIsRunning: " + netWorkIsRunning);
@@ -865,7 +836,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
if (noTag) {
Log.e(TAG, "setTagsFinished: " + "not set tag");
netWorkIsRunning = false;
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - runningTime) + " ms");
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime()) + " ms");
} else {
mPresenter.getSystemSettingbegin();
}
@@ -967,7 +938,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
public void setWiFiPasswd() {
MMKV.defaultMMKV().encode(MainAPresenter.GET_SETTING_FINISH_TIME, System.currentTimeMillis());
netWorkIsRunning = false;
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime() - runningTime) + " ms");
Log.e(TAG, "SettingFinished: " + (SystemClock.elapsedRealtime()) + " ms");
}
@Override

View File

@@ -69,13 +69,13 @@ import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.MediaType;
import okhttp3.MultipartBody;
import okhttp3.RequestBody;
@@ -591,7 +591,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
case GET_DEVICES_INFO:
ToastUtil.betaShow("收到管控:获取设备信息");
if (MainService.mPresenter != null) {
MainService.mPresenter.getLockedState();
MainService.mPresenter.getLockedState("XGPush");
MainService.mPresenter.sendMACAddress();
Log.e(TAG, "mPresenter: " + "getLockedState");
} else {
@@ -713,7 +713,7 @@ public class MessageReceiver extends XGPushBaseReceiver {
Log.e(TAG, "setHomepagtag: " + e.getMessage());
}
if (MainService.mPresenter != null) {
MainService.mPresenter.getLockedState();
MainService.mPresenter.getLockedState("XGPush_RESTORE");
Log.e("getLockedState", "mPresenter: " + "getLockedState");
} else {
Log.e("getLockedState", "mPresenter is NULL");

View File

@@ -18,27 +18,21 @@ import android.net.Uri;
import android.os.Binder;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.RequiresApi;
import androidx.core.content.FileProvider;
import android.text.TextUtils;
import android.text.format.Formatter;
import android.util.Log;
import android.view.View;
import android.widget.Toast;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.bean.UploadAppInfo;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames;
import com.arialyy.aria.core.Aria;
import com.arialyy.aria.core.download.DownloadEntity;
import com.google.gson.Gson;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.bean.UploadAppInfo;
import com.aoleyun.sn.network.NetInterfaceManager;
import java.io.BufferedReader;
import java.io.DataOutputStream;
@@ -58,14 +52,13 @@ import java.util.function.Predicate;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
public class ApkUtils {
private static String TAG = ApkUtils.class.getSimpleName();
@@ -1166,7 +1159,7 @@ public class ApkUtils {
uploadAppInfo.setApp_name(packageInfo.applicationInfo.loadLabel(context.getPackageManager()).toString());
uploadAppInfo.setPackage_name(packageInfo.packageName);
Log.e("getRunningAppInfo", "getRunningAppInfo:" + packageInfo.packageName);
String firstInstallTime = Utils.transferLongToDate(packageInfo.lastUpdateTime);
String firstInstallTime = TimeUtils.transferLongToDate(packageInfo.lastUpdateTime);
uploadAppInfo.setInstall_time(firstInstallTime);
uploadAppInfo.setVersionCode(String.valueOf(packageInfo.versionCode));
uploadAppInfo.setState(0);

View File

@@ -35,6 +35,7 @@ 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.receiver.BootReceiver;
import com.blankj.utilcode.util.FileUtils;
import com.google.gson.Gson;
import com.google.gson.JsonObject;
@@ -1936,4 +1937,23 @@ public class JGYUtils {
}
public static final String PACKAGE_DEVICEINFO = "com.aoleyun.sn";
public static final String PACKAGE_APPSTORE = "com.aoleyun.appstore";
public static final String CLASS_DEVICEINFO = "com.aoleyun.sn.receiver.BootReceiver";
public static final String CLASS_APPSTORE = "com.aoleyun.appstore.receiver.BootReceiver";
public void wakeUpDeviceInfo() {
//启动设备信息
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
bootIntent.setComponent(new ComponentName(PACKAGE_DEVICEINFO, CLASS_DEVICEINFO));
mContext.sendBroadcast(bootIntent);
}
public void wakeUpAppstore() {
//启动应用市场
Intent bootIntent = new Intent(BootReceiver.BOOT_COMPLETED);
bootIntent.setComponent(new ComponentName(PACKAGE_APPSTORE, CLASS_APPSTORE));
mContext.sendBroadcast(bootIntent);
}
}

View File

@@ -4,7 +4,9 @@ import android.content.Context;
import android.content.Intent;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
@@ -15,6 +17,9 @@ import com.aoleyun.sn.service.main.MainService;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/**
@@ -52,6 +57,10 @@ public class TimeUtils {
return false;
}
/**
* @return 获取今日0点时间戳
* 没有管时区问题
*/
private static long getZeroTiemstamp() {
long nowTime = System.currentTimeMillis();
long dayMillisecond = 60 * 60 * 24 * 1000;
@@ -60,6 +69,22 @@ public class TimeUtils {
return zeroTime;
}
@RequiresApi(api = Build.VERSION_CODES.O)
public static boolean isTodayTime(long timeStamp) {
String time = transferLongToDate(timeStamp);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localTime = LocalDateTime.parse(time, dtf);
LocalDateTime startTime = LocalDate.now().atTime(0, 0, 0);
LocalDateTime endTime = LocalDate.now().atTime(23, 59, 59);
return localTime.isAfter(startTime) && localTime.isBefore(endTime);
}
public static String transferLongToDate(Long millSec) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(millSec);
return sdf.format(date);
}
private static long getLoopTime(String timestamp) {
//"15:34:39"
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");

View File

@@ -15,13 +15,13 @@ import java.util.concurrent.TimeUnit;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import okhttp3.Call;
import okhttp3.OkHttpClient;
import okhttp3.Request;

View File

@@ -33,10 +33,6 @@ import android.os.Environment;
import android.os.StatFs;
import android.os.SystemClock;
import android.provider.Settings;
import androidx.annotation.RequiresApi;
import androidx.annotation.VisibleForTesting;
import android.telephony.TelephonyManager;
import android.text.TextUtils;
import android.text.format.Formatter;
@@ -49,7 +45,13 @@ import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.Toast;
import androidx.annotation.RequiresApi;
import androidx.annotation.VisibleForTesting;
import com.alibaba.fastjson.JSONObject;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.base.BaseApplication;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.network.HTTPInterface;
import com.arialyy.aria.core.Aria;
@@ -60,9 +62,6 @@ import com.google.zxing.WriterException;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.base.BaseApplication;
import java.io.BufferedReader;
import java.io.DataOutputStream;
@@ -98,13 +97,13 @@ import java.util.Map;
import java.util.Set;
import java.util.regex.Pattern;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
import static android.content.Context.WIFI_SERVICE;
@@ -774,17 +773,6 @@ public class Utils {
}
}
public static String transferLongToDate(Long millSec) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = new Date(millSec);
return sdf.format(date);
}
public static Bitmap createQRImage(String content, int widthPix, int heightPix) {
try {
// if (content == null || "".equals(content)) {

View File

@@ -11,14 +11,14 @@ import android.util.Log;
import androidx.annotation.RequiresApi;
import com.aoleyun.sn.bean.Expansions;
import com.aoleyun.sn.bean.SplitApks;
import com.google.gson.Gson;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import com.google.gson.reflect.TypeToken;
import com.aoleyun.sn.bean.Expansions;
import com.aoleyun.sn.bean.SplitApks;
import org.zeroturnaround.zip.ZipUtil;
@@ -34,13 +34,13 @@ import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.ObservableEmitter;
import io.reactivex.ObservableOnSubscribe;
import io.reactivex.Observer;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.disposables.Disposable;
import io.reactivex.schedulers.Schedulers;
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
import io.reactivex.rxjava3.core.Observable;
import io.reactivex.rxjava3.core.ObservableEmitter;
import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
import io.reactivex.rxjava3.schedulers.Schedulers;
/**
* @author Administrator

View File

@@ -5,4 +5,127 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/bannerLayout"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/back"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginStart="@dimen/dp_8"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/back"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:text="运行日志"
android:textColor="@color/title_textcolor"
android:textSize="@dimen/sp_14"
android:textStyle="bold"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_refresh"
android:layout_width="@dimen/dp_16"
android:layout_height="@dimen/dp_16"
android:layout_marginEnd="@dimen/dp_8"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:src="@drawable/refresh"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<LinearLayout
android:id="@+id/ll_title"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_32"
android:orientation="horizontal"
app:layout_constraintTop_toBottomOf="@+id/bannerLayout">
<TextView
android:id="@+id/tv_code"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="代码" />
<TextView
android:id="@+id/tv_timestamp"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="时间" />
<TextView
android:id="@+id/tv_event"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="事件" />
<TextView
android:id="@+id/tv_operate"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="操作" />
<TextView
android:id="@+id/tv_content"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3"
android:gravity="center"
android:text="内容" />
</LinearLayout>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/constraintLayout4"
app:layout_constraintTop_toBottomOf="@+id/ll_title" />
<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout4"
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent">
<ImageView
android:id="@+id/iv_delete"
android:layout_width="@dimen/dp_32"
android:layout_height="@dimen/dp_32"
android:adjustViewBounds="true"
android:scaleType="centerInside"
android:src="@drawable/delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>