feat: 网络请求增加内存缓存,修改MainService为mvvm模式

This commit is contained in:
2026-05-08 09:32:30 +08:00
parent f42d63e93c
commit c7851a8a64
16 changed files with 541 additions and 1600 deletions

View File

@@ -29,8 +29,8 @@ android {
defaultConfig {
applicationId "com.aoleyun.sn"
versionCode 214
versionName "1.6.0427"
versionCode 216
versionName "1.6.0507"
//There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature.
minSdkVersion 24

View File

@@ -3,21 +3,19 @@ package com.aoleyun.sn.activity;
import android.app.ActivityManager;
import android.content.Context;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
import androidx.databinding.DataBindingUtil;
import com.aoleyun.sn.BuildConfig;
import com.aoleyun.sn.R;
import com.aoleyun.sn.base.BaseDataBindingActivity;
import com.aoleyun.sn.base.mvp.BaseMvpActivity;
import com.aoleyun.sn.databinding.ActivityCleanupBinding;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.AppUtil;
import com.hjq.toast.Toaster;
import com.king.view.circleprogressview.CircleProgressView;
import java.lang.reflect.Method;
import java.util.List;
@@ -68,7 +66,7 @@ public class CleanupActivity extends BaseDataBindingActivity {
}
Toaster.show(String.format(getString(R.string.clear_app_size), pkgList.size()));
refreshMemory();
Handler.getMain().postDelayed(new Runnable() {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
finish();

View File

@@ -10,6 +10,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
import android.util.Log;
import android.view.View;
@@ -65,7 +66,7 @@ public class SplashActivity extends AppCompatActivity {
setContentView(R.layout.activity_home);
initView();
debugTest();
new Handler().postDelayed(() -> {
new Handler(Looper.getMainLooper()).postDelayed(() -> {
startActivity(new Intent(SplashActivity.this, MainActivity.class));
finish();
// sendBroadcastStatus("0");

View File

@@ -376,7 +376,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
public void onServiceConnected(ComponentName name, IBinder service) {
Log.e(TAG, "onServiceConnected: ");
mMainBinder = (MainService.MainBinder) service;
mMainBinder.getService().mPresenter.getLockedState();
mMainBinder.getService().mServiceModel.getLockedState();
}
@Override

View File

@@ -81,7 +81,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
* 通过sn获取用户信息
*/
public void getStudesInfo() {
NetInterfaceManager.getInstance().getStudesInfo(true, getLifecycle(), new NetInterfaceManager.StudesInfoListener() {
NetInterfaceManager.getInstance().getStudesInfo(getLifecycle(), new NetInterfaceManager.StudesInfoListener() {
@Override
public void setStudentsInfo(StudentsInfo studentsInfo) {
mStudentsInfoData.setValue(studentsInfo);
@@ -97,7 +97,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
public MutableLiveData<Boolean> mEBagCodeData = new MutableLiveData<>();
public void getEBagCode() {
NetInterfaceManager.getInstance().getEBagCode(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().getEBagCode(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mEBagCodeData.setValue(Settings.Global.getInt(getCtx().getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0) == 1);
@@ -186,7 +186,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
public void checkAoleyunUpdate() {
NetInterfaceManager.getInstance()
.checkAoleyunUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.checkAoleyunUpdate(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
@@ -197,7 +197,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
public void checkTestUpdate() {
if (!JgyUtils.getInstance().tagEmpty()) {
NetInterfaceManager.getInstance()
.checkTestUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.checkTestUpdate(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
@@ -232,7 +232,7 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
public void getDefaultApp() {
NetInterfaceManager.getInstance()
.getDefaultApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getDefaultApp(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {

View File

@@ -2,13 +2,11 @@ package com.aoleyun.sn.bean;
import androidx.annotation.NonNull;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import java.io.Serializable;
public class BaseResponse<T> implements Serializable {
private static final long serialVersionUID = 5468533687801294972L;
@@ -17,6 +15,10 @@ public class BaseResponse<T> implements Serializable {
public String msg;
public T data;
public boolean isSuccess() {
return code == 200;
}
@NonNull
@Override
public String toString() {

View File

@@ -42,6 +42,8 @@ public class UrlAddress {
public static final String GET_SN_APP_TEST = "Sn/getSnAppTest";
/*强制安装应用 不允许卸载*/
public static final String GET_FORCE_INSTALL_LIST = "forceinstall/index";
/*分组应用强制安装*/
public static final String GROUP_APP_INSTALL_LIST = "forceinstall/group-app";
/*电子围栏*/
public static final String GET_SN_EFENCE = "android/sn/efence";
@@ -57,8 +59,6 @@ public class UrlAddress {
/*通过固件名获取内置应用*/
@Deprecated
public static final String GET_ROM_APP = "And/getFirmwareApp";
/*分组应用强制安装*/
public static final String GROUP_APP_INSTALL_LIST = "forceinstall/group-app";
/*获取应用升级自启*/
public static final String NET_AND_LAUNCH_API = "automatic/get";

View File

@@ -58,5 +58,4 @@ public interface DevicesStatusApi {
@Field("type") int type
);
}
}

View File

@@ -147,9 +147,9 @@ public interface UploadInfoApi {
@Field("time") String time
);
@Deprecated
@FormUrlEncoded
@POST(UrlAddress.SEND_DOWNLOAD_TIMES)
@Deprecated
Observable<BaseResponse> sendDownloadTimes(
@Field("key") String key,
@Field("sn") String sn,

View File

@@ -16,6 +16,7 @@ import android.media.MediaPlayer;
import android.os.BatteryManager;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.PowerManager;
import android.provider.Settings;
import android.text.TextUtils;
@@ -35,13 +36,11 @@ import com.aoleyun.sn.bean.ScreenLockState;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.dialog.CustomDialog;
import com.aoleyun.sn.disklrucache.CacheHelper;
import com.aoleyun.sn.gson.GsonUtils;
import com.aoleyun.sn.gson.NullStringToEmptyAdapterFactory;
import com.aoleyun.sn.manager.MapManager;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.RetryCallback;
import com.aoleyun.sn.network.UrlAddress;
import com.aoleyun.sn.service.main.MainService;
import com.aoleyun.sn.utils.ApkUtils;
import com.aoleyun.sn.utils.BatteryUtils;
@@ -96,8 +95,8 @@ import retrofit2.Response;
public class PushManager {
private static final String TAG = "PushManager";
public static final String ACTION_REFRESH_BINDING_STATUS = "RefreshBindingStatus";
public static final String AOLEYUN_REFRESH_DESKTOP = "aoleyun_refresh_desktop_action";
private static final String ACTION_REFRESH_BINDING_STATUS = "RefreshBindingStatus";
private static final String AOLEYUN_REFRESH_DESKTOP = "aoleyun_refresh_desktop_action";
@SuppressLint("StaticFieldLeak")
@@ -105,7 +104,6 @@ public class PushManager {
private Context mContext;
private PackageManager mPackageManager;
private ContentResolver mResolver;
private CacheHelper mCacheHelper;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private PushManager(Context context) {
@@ -114,7 +112,6 @@ public class PushManager {
}
this.mContext = context;
this.mResolver = context.getContentResolver();
this.mCacheHelper = new CacheHelper(context);
this.mPackageManager = mContext.getPackageManager();
}
@@ -320,7 +317,7 @@ public class PushManager {
case MSG_INSTALL:
Toaster.debugShow("收到管控:应用安装");
doDownloadAndInstall(extras);
Handler.getMain().postDelayed(new Runnable() {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
NetInterfaceManager.getInstance().getDesktopIcon();
@@ -355,7 +352,7 @@ public class PushManager {
downloadForceInstallApk(extras);
break;
case SET_HOMEPAG_TAG:
Handler.getMain().postDelayed(new Runnable() {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
try {
@@ -380,7 +377,7 @@ public class PushManager {
break;
case HIDE_DESKTOP_ICON:
Toaster.debugShow("收到管控:隐藏应用设置");
Handler.getMain().postDelayed(() -> {
new Handler(Looper.getMainLooper()).postDelayed(() -> {
//后台发送时数据库未改变,有时候可能获取到的数据时上一次的
Log.e(TAG, "run: HIDE_DESKTOP_ICON ");
NetInterfaceManager.getInstance().getDesktopIcon();
@@ -732,7 +729,7 @@ public class PushManager {
}
}
ApkUtils.UninstallAPP(mContext, pkg);
Handler.getMain().postDelayed(new Runnable() {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
NetInterfaceManager.getInstance().getDesktopIcon();
@@ -757,7 +754,7 @@ public class PushManager {
} catch (Exception e) {
Log.e(TAG, "disableApp: " + e.getMessage());
}
Handler.getMain().postDelayed(() -> NetInterfaceManager.getInstance().getSnAppAttr(), 1234);
new Handler(Looper.getMainLooper()).postDelayed(() -> NetInterfaceManager.getInstance().getSnAppAttr(), 1234);
}
private void setLock_screen(int state, String name) {
@@ -767,7 +764,6 @@ public class PushManager {
ScreenLockState screenLockState = new ScreenLockState();
screenLockState.setIs_screen_lock(state);
screenLockState.setName(name);
mCacheHelper.put(UrlAddress.GET_LOCK_SCREEN_STATE, GsonUtils.toJSONString(screenLockState));
Intent intent = new Intent();
intent.putExtra("name", name);
if (state == 1) {
@@ -1000,7 +996,7 @@ public class PushManager {
JgyUtils.release(mWakeLock);
if (createTime != 0) {
Log.e("createTime", String.valueOf(createTime));
Handler.getMain().postDelayed(new Runnable() {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
doscreenshot(createTime);
@@ -1118,7 +1114,6 @@ public class PushManager {
private void getTopApp(String extras) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
mCacheHelper.put(UrlAddress.GET_TOP_APP_CONTROL, extras);
String packageName = jsonObject.get("app_package").getAsString();
if (TextUtils.isEmpty(packageName)) {

View File

@@ -1,188 +0,0 @@
package com.aoleyun.sn.service.main;
import com.aoleyun.sn.base.mvp.BasePresenter;
import com.aoleyun.sn.base.mvp.BaseView;
import java.util.List;
public class MainSContact {
public interface Presenter extends BasePresenter<MainView> {
/*分支1*/
/*获取设备锁定状态*/
void getLockedState();
/*设置极光推送标签*/
void setPushTags();
/*分支2 基本信息*/
/*是否第一次联网*/
void getFirstConnect();
/*获取学生信息*/
void getStudesInfo();
/*分支3 上传信息*/
/*上传联网时间*/
void sendNetwork(List<Long> time);
/*发送mac地址*/
void sendMacAddress();
/*更新设备信息*/
void updateDeviceInfo();
/*上传安装的应用列表*/
void sendInstalled();
/*获取设备信息更新*/
void checkAoleyunUpdate();
/*获取测试应用更新*/
void checkTestUpdate();
/*分支4 根据SN获取*/
/*获取开发者选项*/
void getDeveloper();
/*获取自定义内置app*/
void getRomApp();
/*获取屏幕锁状态*/
void getScreenLockState();
/*电子围栏*/
void geteFence();
/*分支5 根据批次获取*/
/*获取设备后台设置*/
void getSystemSettingBegin();
/*获取可被写入的安装包名*/
void getAppLimit();
/*获取强制下载apk*/
void getForceDownload();
/*获取桌面*/
void getDefaultDesktop();
/*设置开机动画*/
void setLogoImg();
/*获取壁纸*/
void getWallpaper();
/*获取所有app详细信息*/
void getAllAppList();
/*获取浏览器书签设置管控*/
void getBrowserBookmarks();
/*设置白名单的url 单独*/
void getBrowserWhiteList();
/*获取应用图标桌面可见性管控*/
void getDesktopIcon();
/*获取应用自启升级和网络权限管理*/
void getAppAutoStartUpdateAndNet();
/*获取禁用app*/
void getSnAppAttr();
/*获取第三方应用子页面ID连网限制*/
void getAppIdControl();
/*获取第三方应用内部网页跳转屏蔽*/
void setAppinsideWeb();
/*获取系统其他管控设置*/
void getSystemSetting();
/*获取系统默认程序设置*/
void getDefaultApp();
/*应用霸屏*/
void setTopApp();
/*获取关机时间*/
void getPoweroffTime();
/*获取时间管控*/
void getSnTimeControl();
void getSnSetting();
/*获取网课模式*/
void getCloudLessonSettings();
/*获取电子书包激活码*/
void getEbagCode();
/*获取学习应用*/
void getExclusiveAdminApp();
/*获取全局黑名单*/
void getBlackList();
/*获取全局白名单*/
void getWhiteList();
/*获取wifi密码*/
void getWiFiPasswd();
}
public interface MainView extends BaseView {
/*获取设备锁定状态*/
void setLockedState(boolean loocked);
/*设置极光推送标签*/
void setTagsFinish(boolean noTag);
/*是否第一次联网*/
void setFirstConnect(boolean state);
/*获取学生信息*/
void setStudesInfo();
/*上传联网时间*/
void sendNetworkFinish();
/*发送mac地址*/
void sendMacFinish();
/*更新设备信息*/
void updateDeviceInfoFinish();
/*上传安装的应用列表*/
void sendInstalledFinish();
/*获取设备信息更新*/
void checkAoleyunUpdateFinish();
/*获取测试应用更新*/
void checkTestUpdateFinish();
/*获取开发者选项结束*/
void getDeveloperFinish();
/*获取自定义内置app*/
void getRomAppFinish();
/*设置屏幕锁状态结束*/
void setScreenLockStateFinish(boolean locked, String tips);
/*获取电子围栏结束*/
void geteFenceFinish();
/*设置设备后台设置*/
void setSystemSetting();
/*获取可被写入的安装包名结束*/
void getAppLimitFinish();
/*获取强制下载apk结束*/
void getForceDownloadFinish();
/*获取桌面结束*/
void getDefaultDesktopFinish();
/*设置开机动画*/
void setLogoImgFinish();
/*获取开机动画结束*/
void getWallpaperFinish();
/*获取所有app详细信息*/
void getAllAppListFinish();
/*获取浏览器书签设置管控结束*/
void getBrowserBookmarksFinish();
/*设置白名单的url 单独*/
void setBrowserWhiteList();
/*获取应用图标桌面可见性管控结束*/
void getDesktopIconFinish();
/*获取应用自启升级和网络权限管理结束*/
void getAppAutoStartUpdateAndNetFinish();
/*获取禁用app*/
void getSnAppAttrFinish();
/*获取第三方应用子页面ID连网限制结束*/
void getAppIdControlFinish();
/*获取第三方应用内部网页跳转屏蔽结束*/
void setAppinsideWebFinish();
/*获取系统其他管控设置结束*/
void getSystemSettingFinish();
/*获取系统默认程序设置*/
void setDefaultAppFinish();
/*获取应用霸屏结束*/
void setTopAppFinish();
/*获取关机时间*/
void setPoweroffTime();
/*获取时间管控*/
void getSnTimeControlFinish();
void getSnSettingFinish();
void setCloudLessonSettings();
/*获取电子书包激活码*/
void getEbagCodeFinish(boolean activation);
/*获取学习应用*/
void getExclusiveAdminAppFinish();
/*获取全局黑名单结束*/
void getBlackListFinish();
/*获取全局白名单结束*/
void getWhiteListFinish();
/*获取wifi密码结束*/
void setWiFiPasswd();
}
}

View File

@@ -45,6 +45,7 @@ import com.aoleyun.sn.R;
import com.aoleyun.sn.activity.main.MainActivity;
import com.aoleyun.sn.base.BaseService;
import com.aoleyun.sn.bean.PoweroffBean;
import com.aoleyun.sn.bean.ScreenLockState;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.comm.PackageNames;
@@ -67,8 +68,6 @@ import com.google.gson.JsonObject;
import com.google.gson.reflect.TypeToken;
import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.LifecycleProvider;
import com.trello.rxlifecycle4.android.ActivityEvent;
import java.lang.reflect.Type;
import java.text.SimpleDateFormat;
@@ -84,14 +83,14 @@ import io.reactivex.rxjava3.core.ObservableOnSubscribe;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class MainService extends BaseService implements MainSContact.MainView, NetworkUtils.OnNetworkStatusChangedListener, LifecycleProvider<ActivityEvent> {
public class MainService extends BaseService implements NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = "MainService";
private static final String JXW_LAUNCHER = "com.wyt.wangkexueximvvm";
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
public MainSPresenter mPresenter;
private static final String JXW_LAUNCHER = "com.wyt.wangkexueximvvm";
public MainServiceModel mServiceModel;
@Override
public void onDisconnected() {
@@ -111,7 +110,7 @@ public class MainService extends BaseService implements MainSContact.MainView, N
TimeTask task = new TimeTask();
task.execute("ntp.aliyun.com");
if (!checkAoleyunApp()) {
mPresenter.checkAoleyunUpdate();
mServiceModel.checkAoleyunUpdate();
}
}
mInternetConnected.onConnected(WiFiAlias);
@@ -128,7 +127,7 @@ public class MainService extends BaseService implements MainSContact.MainView, N
super.onPostExecute(aLong);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
am.setTime(aLong);
Handler.getMain().postDelayed(new Runnable() {
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
// aliyunPushInit();
@@ -184,47 +183,26 @@ public class MainService extends BaseService implements MainSContact.MainView, N
});
}
private InternetConnected mInternetConnected;
public interface InternetConnected {
void onConnected(String alias);
}
private final ObservableOnSubscribe<String> networkSubscribe = new ObservableOnSubscribe<String>() {
@Override
public void subscribe(ObservableEmitter emitter) throws Exception {
mInternetConnected = new InternetConnected() {
@Override
public void onConnected(String alias) {
Log.e(TAG, "networkSubscribe: onConnected " + alias);
emitter.onNext(alias);
private void checkAliyunPushStatus() {
CloudPushService mPushService = PushServiceFactory.getCloudPushService();
mPushService.checkPushChannelStatus(new CommonCallback() {
@Override
public void onSuccess(String response) {
Log.e("checkAliyunPushStatus", "onSuccess: " + response);
if ("on".equals(response)) {
// 当前是打开状态
} else {
// 当前是关闭状态
aliyunPushInit();
}
};
}
};
}
private Observer<String> networkObserver = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.e("networkObserver", "onSubscribe: ");
}
@Override
public void onNext(String action) {
Log.e("networkObserver", "onNext: " + action);
mPresenter.getLockedState();
}
@Override
public void onError(Throwable e) {
Log.e("networkObserver", "onError: " + e.getMessage());
}
@Override
public void onComplete() {
Log.e("networkObserver", "onComplete: ");
}
};
@Override
public void onFailed(String errorCode, String errorMessage) {
Log.e("checkAliyunPushStatus", "onFailed: errorCode = " + errorCode + " errorMessage = " + errorMessage);
}
});
}
private KillAppListener killAppListener;
@@ -275,164 +253,47 @@ public class MainService extends BaseService implements MainSContact.MainView, N
}
};
private WifiReceiver mWifiReceiver;
private InternetConnected mInternetConnected;
private void registerWiFiReceiver() {
if (mWifiReceiver == null) {
mWifiReceiver = new WifiReceiver();
}
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
filter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
filter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mWifiReceiver, filter);
public interface InternetConnected {
void onConnected(String alias);
}
public class WifiReceiver extends BroadcastReceiver {
private static final String TAG = "wifiReceiver";
private final ObservableOnSubscribe<String> networkSubscribe = new ObservableOnSubscribe<String>() {
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case WifiManager.RSSI_CHANGED_ACTION:
Log.e(TAG, "wifi信号强度变化");
break;
//wifi连接上与否
case WifiManager.NETWORK_STATE_CHANGED_ACTION:
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
Log.e(TAG, "wifi断开");
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();
//获取当前wifi名称
String oldSSID = mMMKV.decodeString("WiFiSSID", "");
Log.e(TAG, "oldSSID " + oldSSID);
String newSSID = wifiInfo.getSSID();
Log.e(TAG, "连接到网络 " + newSSID);
if (!oldSSID.equals(newSSID)) {
LogDBManager.getInstance().creatNetChangeLog("", oldSSID + " change to: " + newSSID);
//直接获取数据
} else {
LogDBManager.getInstance().creatNetChangeLog("接入WiFi",
"connect to: " + newSSID + " time: "
+ TimeUtils.transferLongToDate(System.currentTimeMillis()));
}
mMMKV.encode("WiFiSSID", Utils.getWifiAlias(context));
}
break;
//wifi打开与否
case WifiManager.WIFI_STATE_CHANGED_ACTION:
int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
Log.e(TAG, "系统关闭wifi");
} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
Log.e(TAG, "系统开启wifi");
}
break;
default:
}
}
}
private RefreshReceiver mRefreshReceiver;
private void registerRefreshReceiver() {
if (mRefreshReceiver == null) {
mRefreshReceiver = new RefreshReceiver();
}
IntentFilter filter = new IntentFilter();
filter.addAction(RefreshReceiver.REFRESH_RECEIVER_ACTION);
registerReceiver(mRefreshReceiver, filter);
}
public class RefreshReceiver extends BroadcastReceiver {
public static final String REFRESH_RECEIVER_ACTION = "Receiver_Refresh_Action";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e("RefreshReceiver", "onReceive: " + action);
if (!TextUtils.isEmpty(action)) {
NetInterfaceManager.clearAllCache();
mPresenter.getLockedState();
}
}
}
private ScreenLockReceiver screenLockReceiver;
private void registerScreenLockReceiver() {
if (null == screenLockReceiver) {
screenLockReceiver = new ScreenLockReceiver();
}
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(screenLockReceiver, filter);
}
private class ScreenLockReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG, "onReceive:" + action);
if (TextUtils.isEmpty(action)) {
Log.e(TAG, "onReceive: is NULL");
return;
}
switch (action) {
case Intent.ACTION_SCREEN_ON:
checkAliyunPushStatus();
break;
case Intent.ACTION_SCREEN_OFF:
killAppListener.killApp(action);
break;
default:
break;
}
}
}
private void checkAliyunPushStatus() {
CloudPushService mPushService = PushServiceFactory.getCloudPushService();
mPushService.checkPushChannelStatus(new CommonCallback() {
@Override
public void onSuccess(String response) {
Log.e("checkAliyunPushStatus", "onSuccess: " + response);
if ("on".equals(response)) {
// 当前是打开状态
} else {
// 当前是关闭状态
aliyunPushInit();
public void subscribe(ObservableEmitter emitter) throws Exception {
mInternetConnected = new InternetConnected() {
@Override
public void onConnected(String alias) {
Log.e(TAG, "networkSubscribe: onConnected " + alias);
emitter.onNext(alias);
}
}
};
}
};
@Override
public void onFailed(String errorCode, String errorMessage) {
Log.e("checkAliyunPushStatus", "onFailed: errorCode = " + errorCode + " errorMessage = " + errorMessage);
}
});
}
private Observer<String> networkObserver = new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.e("networkObserver", "onSubscribe: ");
}
public MainService() {
@Override
public void onNext(String action) {
Log.e("networkObserver", "onNext: " + action);
mServiceModel.getLockedState();
}
}
@Override
public void onError(Throwable e) {
Log.e("networkObserver", "onError: " + e.getMessage());
}
@Override
public IBinder onBind(Intent intent) {
return mMainBinder;
}
@Override
public void onComplete() {
Log.e("networkObserver", "onComplete: ");
}
};
public MainBinder mMainBinder = new MainBinder();
@@ -442,13 +303,19 @@ public class MainService extends BaseService implements MainSContact.MainView, N
}
}
@Override
public IBinder onBind(Intent intent) {
return mMainBinder;
}
@Override
public void onCreate() {
super.onCreate();
Log.e(TAG, "onCreate: ");
mPresenter = new MainSPresenter(this);
mPresenter.attachView(this);
mPresenter.setLifecycle(getLifecycleSubject());
mServiceModel = new MainServiceModel(this);
mServiceModel.setLifecycle(getLifecycleSubject());
initLiveData();
if ("YX-T01".equalsIgnoreCase(Build.MODEL)) {
JgyUtils.getInstance().setTongyiAppTop();
}
@@ -478,7 +345,7 @@ public class MainService extends BaseService implements MainSContact.MainView, N
new Handler(Looper.getMainLooper()).postDelayed(new Runnable() {
@Override
public void run() {
mPresenter.getLockedState();
mServiceModel.getLockedState();
}
}, 20000);
@@ -583,7 +450,7 @@ public class MainService extends BaseService implements MainSContact.MainView, N
setStatusbar();
setFloatingWindow();
JgyUtils.getInstance().writeAppPackageList();
notificationManager = NotificationManagerCompat.from(this);
mNotificationManagerCompat = NotificationManagerCompat.from(this);
createNotificationChannel();
sendSimpleNotification();
@@ -610,6 +477,119 @@ public class MainService extends BaseService implements MainSContact.MainView, N
JgyUtils.getInstance().checkAoleyunApp();
}
private void initLiveData() {
mServiceModel.mLockedStateData.observe(this, new androidx.lifecycle.Observer<Boolean>() {
@Override
public void onChanged(Boolean loocked) {
Log.e(TAG, "setLockedState: " + loocked);
if (loocked) {
Toaster.debugShow("设备已上锁");
mServiceModel.setPushTags();
ApkUtils.UninstallAPP(MainService.this, "com.joytv.live");
ApkUtils.UninstallAPP(MainService.this, "com.tencent.android.qqdownloader");
} else {
Toaster.debugShow("设备已解锁");
// notificationManager.cancel(NotificationID);
JgyUtils.getInstance().writeAppPackageList();
SysSettingUtils.setEnableSetting(MainService.this);
}
//更新主页锁定状态
Intent intent = new Intent(MainActivity.UPDATE_LOCKED_STATUS);
sendBroadcast(intent);
}
});
mServiceModel.mTagData.observe(this, new androidx.lifecycle.Observer<String>() {
@Override
public void onChanged(String tag) {
if (TextUtils.isEmpty(tag)) {
//没有批次就没有管控
Log.e(TAG, "setTagsFinish: not set tag");
// SysSettingUtils.setEnableSetting(this);
Settings.System.putString(getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "");
} else {
mServiceModel.getForceDownload();
mServiceModel.getWallpaper();
mServiceModel.setLogoImg();
mServiceModel.getAllAppList();
mServiceModel.getBrowserBookmarks();
mServiceModel.getDesktopIcon();
mServiceModel.getAppAutoStartUpdateAndNet();
mServiceModel.setAppinsideWeb();
mServiceModel.getAppIdControl();
mServiceModel.getSystemSetting();
mServiceModel.getWiFiPasswd();
mServiceModel.getDefaultApp();
mServiceModel.getSnTimeControl();
mServiceModel.setTopApp();
mServiceModel.getBlackList();
mServiceModel.getWhiteList();
mServiceModel.getPoweroffTime();
}
mServiceModel.getStudesInfo();
mServiceModel.checkAoleyunUpdate();
mServiceModel.checkTestUpdate();
mServiceModel.getDeveloper();
mServiceModel.getRomApp();
mServiceModel.getScreenLockState();
mServiceModel.geteFence();
mServiceModel.getDefaultDesktop();
mServiceModel.sendMacAddress();
mServiceModel.updateDeviceInfo();
mServiceModel.sendInstalled();
mServiceModel.getSnAppAttr();
mServiceModel.getAppLimit();
mServiceModel.getCloudLessonSettings();
mServiceModel.getEbagCode();
//没绑定不请求
mServiceModel.getSnSetting();
}
});
mServiceModel.mScreenLockStateData.observe(this, new androidx.lifecycle.Observer<ScreenLockState>() {
@Override
public void onChanged(ScreenLockState screenLockState) {
if (screenLockState != null) {
int screen_lock = screenLockState.getIs_screen_lock();
String tips = screenLockState.getLock_content();
if (screen_lock == 1) {
if (!timelocked) {
showFloatingWindow(tips);
}
screenlocked = true;
SPUtils.put(MainService.this, "is_screen_lock", true);
SPUtils.put(MainService.this, "screen_tips", tips);
} else {
if (!timelocked) {
hideFloatingWindow();
}
screenlocked = false;
SPUtils.put(MainService.this, "is_screen_lock", false);
SPUtils.put(MainService.this, "screen_tips", "");
}
} else {
if (!timelocked) {
hideFloatingWindow();
}
screenlocked = false;
SPUtils.put(MainService.this, "is_screen_lock", false);
SPUtils.put(MainService.this, "screen_tips", "");
}
}
});
}
@Deprecated
private void deprecatedInit() {
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(TAG, "onStartCommand: ");
@@ -629,7 +609,6 @@ public class MainService extends BaseService implements MainSContact.MainView, N
super.onDestroy();
unRegisterReceivers();
NetworkUtils.unregisterNetworkStatusChangedListener(this);
mPresenter.detachView();
}
// TODO: 2022/3/31 暂时不检测版本
@@ -653,12 +632,12 @@ public class MainService extends BaseService implements MainSContact.MainView, N
channel.setDescription(CHANNEL_DESCRIPTION);
// Register the channel with the system; you can't change the importance
// or other notification behaviors after this
notificationManager.createNotificationChannel(channel);
mNotificationManagerCompat.createNotificationChannel(channel);
}
}
private NotificationManagerCompat notificationManager;
private int NotificationID = 1;
private NotificationManagerCompat mNotificationManagerCompat;
private int mNotificationId = 1;
private void sendSimpleNotification() {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
@@ -671,7 +650,7 @@ public class MainService extends BaseService implements MainSContact.MainView, N
.setPriority(NotificationCompat.PRIORITY_MAX);
// notificationId is a unique int for each notification that you must define
// notificationManager.notify(NotificationID, builder.build());
startForeground(NotificationID, builder.build());
startForeground(mNotificationId, builder.build());
}
private void setStatusbar() {
@@ -721,6 +700,133 @@ public class MainService extends BaseService implements MainSContact.MainView, N
}
}
private WifiReceiver mWifiReceiver;
private void registerWiFiReceiver() {
if (mWifiReceiver == null) {
mWifiReceiver = new WifiReceiver();
}
IntentFilter filter = new IntentFilter();
filter.addAction(WifiManager.NETWORK_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
filter.addAction(WifiManager.NETWORK_IDS_CHANGED_ACTION);
filter.addAction(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
filter.addAction(WifiManager.CONFIGURED_NETWORKS_CHANGED_ACTION);
filter.addAction(WifiManager.LINK_CONFIGURATION_CHANGED_ACTION);
filter.addAction(WifiManager.SUPPLICANT_STATE_CHANGED_ACTION);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
registerReceiver(mWifiReceiver, filter);
}
public class WifiReceiver extends BroadcastReceiver {
private static final String TAG = "wifiReceiver";
@Override
public void onReceive(Context context, Intent intent) {
switch (intent.getAction()) {
case WifiManager.RSSI_CHANGED_ACTION:
Log.e(TAG, "wifi信号强度变化");
break;
//wifi连接上与否
case WifiManager.NETWORK_STATE_CHANGED_ACTION:
NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
if (info.getState().equals(NetworkInfo.State.DISCONNECTED)) {
Log.e(TAG, "wifi断开");
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();
//获取当前wifi名称
String oldSSID = mMMKV.decodeString("WiFiSSID", "");
Log.e(TAG, "oldSSID " + oldSSID);
String newSSID = wifiInfo.getSSID();
Log.e(TAG, "连接到网络 " + newSSID);
if (!oldSSID.equals(newSSID)) {
LogDBManager.getInstance().creatNetChangeLog("", oldSSID + " change to: " + newSSID);
//直接获取数据
} else {
LogDBManager.getInstance().creatNetChangeLog("接入WiFi",
"connect to: " + newSSID + " time: "
+ TimeUtils.transferLongToDate(System.currentTimeMillis()));
}
mMMKV.encode("WiFiSSID", Utils.getWifiAlias(context));
}
break;
//wifi打开与否
case WifiManager.WIFI_STATE_CHANGED_ACTION:
int wifistate = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);
if (wifistate == WifiManager.WIFI_STATE_DISABLED) {
Log.e(TAG, "系统关闭wifi");
} else if (wifistate == WifiManager.WIFI_STATE_ENABLED) {
Log.e(TAG, "系统开启wifi");
}
break;
default:
}
}
}
private RefreshReceiver mRefreshReceiver;
private void registerRefreshReceiver() {
if (mRefreshReceiver == null) {
mRefreshReceiver = new RefreshReceiver();
}
IntentFilter filter = new IntentFilter();
filter.addAction(RefreshReceiver.REFRESH_RECEIVER_ACTION);
registerReceiver(mRefreshReceiver, filter);
}
public class RefreshReceiver extends BroadcastReceiver {
public static final String REFRESH_RECEIVER_ACTION = "Receiver_Refresh_Action";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e("RefreshReceiver", "onReceive: " + action);
if (!TextUtils.isEmpty(action)) {
NetInterfaceManager.clearAllCache();
mServiceModel.getLockedState();
}
}
}
private ScreenLockReceiver screenLockReceiver;
private void registerScreenLockReceiver() {
if (null == screenLockReceiver) {
screenLockReceiver = new ScreenLockReceiver();
}
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
registerReceiver(screenLockReceiver, filter);
}
private class ScreenLockReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG, "onReceive:" + action);
if (TextUtils.isEmpty(action)) {
Log.e(TAG, "onReceive: is NULL");
return;
}
switch (action) {
case Intent.ACTION_SCREEN_ON:
checkAliyunPushStatus();
break;
case Intent.ACTION_SCREEN_OFF:
killAppListener.killApp(action);
break;
default:
break;
}
}
}
private static WindowManager windowManager;
private View topView;
boolean screenlocked = false;
@@ -947,7 +1053,6 @@ public class MainService extends BaseService implements MainSContact.MainView, N
private DisplayReceiver mDisplayReceiver;
public void registerDisplayReceiver() {
mDisplayReceiver = new DisplayReceiver();
IntentFilter filter = new IntentFilter();
@@ -964,7 +1069,6 @@ public class MainService extends BaseService implements MainSContact.MainView, N
public static final String READ_MODEL_ENABLED = "READ_MODEL_ENABLED";
public static final String READ_MODEL_DISABLED = "READ_MODEL_DISABLED";
private class DisplayReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
@@ -1043,7 +1147,6 @@ public class MainService extends BaseService implements MainSContact.MainView, N
}
}
private interface TopApp {
void open(Long time);
}
@@ -1080,7 +1183,6 @@ public class MainService extends BaseService implements MainSContact.MainView, N
}
};
private void registerInstallReceiver() {
if (mInstallReceiver == null) {
mInstallReceiver = new InstallReceiver();
@@ -1143,301 +1245,4 @@ public class MainService extends BaseService implements MainSContact.MainView, N
}
}
@Override
public void setLockedState(boolean loocked) {
Log.e(TAG, "setLockedState: " + loocked);
if (loocked) {
Toaster.debugShow("设备已上锁");
mPresenter.setPushTags();
ApkUtils.UninstallAPP(this, "com.joytv.live");
ApkUtils.UninstallAPP(this, "com.tencent.android.qqdownloader");
} else {
Toaster.debugShow("设备已解锁");
// notificationManager.cancel(NotificationID);
JgyUtils.getInstance().writeAppPackageList();
SysSettingUtils.setEnableSetting(this);
}
//更新主页锁定状态
Intent intent = new Intent(MainActivity.UPDATE_LOCKED_STATUS);
sendBroadcast(intent);
}
@Override
public void setTagsFinish(boolean noTag) {
if (noTag) {
//没有批次就没有管控
Log.e(TAG, "setTagsFinish: " + "not set tag");
// mPresenter.getStudesInfo(true);
mPresenter.checkAoleyunUpdate();
// SysSettingUtils.setEnableSetting(this);
Settings.System.putString(getContentResolver(), CommonConfig.AOLE_ACTION_FORCE_APP, "");
mPresenter.getForceDownload();
mPresenter.getAppLimit();
} else {
mPresenter.getFirstConnect();
mPresenter.getStudesInfo();
mPresenter.getSystemSettingBegin();
mPresenter.getAppLimit();
mPresenter.getForceDownload();
mPresenter.getDefaultDesktop();
mPresenter.setLogoImg();
mPresenter.getWallpaper();
mPresenter.getAllAppList();
mPresenter.getBrowserBookmarks();
mPresenter.getBrowserWhiteList();
mPresenter.getDesktopIcon();
mPresenter.getAppAutoStartUpdateAndNet();
mPresenter.getSnAppAttr();
mPresenter.getAppIdControl();
mPresenter.setAppinsideWeb();
mPresenter.getSystemSetting();
mPresenter.getDefaultApp();
mPresenter.setTopApp();
mPresenter.getPoweroffTime();
mPresenter.getSnTimeControl();
mPresenter.getSnSetting();
mPresenter.getCloudLessonSettings();
mPresenter.getEbagCode();
mPresenter.getBlackList();
mPresenter.getWhiteList();
mPresenter.getWiFiPasswd();
}
mPresenter.sendMacAddress();
mPresenter.updateDeviceInfo();
mPresenter.sendInstalled();
mPresenter.checkAoleyunUpdate();
mPresenter.checkTestUpdate();
mPresenter.getDeveloper();
mPresenter.getRomApp();
mPresenter.getScreenLockState();
mPresenter.geteFence();
}
/**
* 首次使用默认关闭所有功能
*
* @param state
*/
@Override
public void setFirstConnect(boolean state) {
Log.e(TAG, "isFirstConnect: " + "end request: " + state);
if (state) {
Log.e(TAG, "setDisableSetting: ");
//设置系统管控
SysSettingUtils.setDisableSetting(this);
JgyUtils.getInstance().writeAppPackageList();
}
}
@Override
public void setStudesInfo() {
Log.e(TAG, "setStudesInfo: " + "基本信息获取完毕");
}
@Override
public void sendNetworkFinish() {
Log.e(TAG, "sendNetworkFinish: ");
}
@Override
public void sendMacFinish() {
}
@Override
public void updateDeviceInfoFinish() {
}
@Override
public void sendInstalledFinish() {
Log.e(TAG, "sendInstalledFinish: ");
}
@Override
public void checkAoleyunUpdateFinish() {
}
@Override
public void checkTestUpdateFinish() {
Log.e(TAG, "checkTestUpdateFinish: ");
}
@Override
public void getDeveloperFinish() {
}
@Override
public void getRomAppFinish() {
}
@Override
public void setScreenLockStateFinish(boolean locked, String tips) {
if (locked) {
if (!timelocked) {
showFloatingWindow(tips);
}
screenlocked = true;
SPUtils.put(this, "is_screen_lock", true);
SPUtils.put(this, "screen_tips", tips);
} else {
if (!timelocked) {
hideFloatingWindow();
}
screenlocked = false;
SPUtils.put(this, "is_screen_lock", false);
SPUtils.put(this, "screen_tips", "");
}
}
@Override
public void geteFenceFinish() {
}
@Override
public void setSystemSetting() {
}
@Override
public void getAppLimitFinish() {
}
@Override
public void getForceDownloadFinish() {
}
@Override
public void getDefaultDesktopFinish() {
}
@Override
public void setLogoImgFinish() {
}
@Override
public void getWallpaperFinish() {
}
@Override
public void getAllAppListFinish() {
}
@Override
public void getBrowserBookmarksFinish() {
}
@Override
public void setBrowserWhiteList() {
}
@Override
public void getDesktopIconFinish() {
}
@Override
public void getAppAutoStartUpdateAndNetFinish() {
}
@Override
public void getSnAppAttrFinish() {
}
@Override
public void getAppIdControlFinish() {
}
@Override
public void setAppinsideWebFinish() {
}
@Override
public void getSystemSettingFinish() {
}
@Override
public void setDefaultAppFinish() {
}
@Override
public void setTopAppFinish() {
}
@Override
public void setPoweroffTime() {
}
@Override
public void getSnTimeControlFinish() {
}
@Override
public void getSnSettingFinish() {
}
@Override
public void setCloudLessonSettings() {
}
@Override
public void getEbagCodeFinish(boolean activation) {
if (activation) {
// mPresenter.getExclusiveAdminApp();
Log.e(TAG, "getEBagCodeFinish: " + "已激活");
} else {
// mPresenter.getBlackList();
Log.e(TAG, "getEBagCodeFinish: " + "未激活");
}
}
@Deprecated
@Override
public void getExclusiveAdminAppFinish() {
Log.e(TAG, "getAdminAppFinish: ");
}
@Override
public void getBlackListFinish() {
Log.e(TAG, "getBlackListFinish: ");
}
@Override
public void getWhiteListFinish() {
Log.e(TAG, "getWhiteListFinish: ");
}
@Override
public void setWiFiPasswd() {
Log.e(TAG, "setWiFiPasswd: ");
}
}

View File

@@ -6,19 +6,23 @@ import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.lifecycle.MutableLiveData;
import androidx.lifecycle.ViewModel;
import com.alibaba.sdk.android.push.CloudPushService;
import com.alibaba.sdk.android.push.CommonCallback;
import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
import com.aoleyun.sn.bean.AdminAppInfo;
import com.aoleyun.sn.bean.BaseResponse;
import com.aoleyun.sn.bean.ScreenLockState;
import com.aoleyun.sn.bean.StudentsInfo;
import com.aoleyun.sn.comm.CommonConfig;
import com.aoleyun.sn.comm.JGYActions;
import com.aoleyun.sn.disklrucache.CacheHelper;
import com.aoleyun.sn.network.NetInterfaceManager;
import com.aoleyun.sn.network.UrlAddress;
import com.aoleyun.sn.utils.JgyUtils;
import com.aoleyun.sn.utils.SPUtils;
import com.aoleyun.sn.utils.SysSettingUtils;
import com.aoleyun.sn.utils.URLUtils;
import com.aoleyun.sn.utils.Utils;
import com.hjq.toast.Toaster;
@@ -33,25 +37,18 @@ import java.util.List;
import java.util.Set;
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;
/**
* MainService Presenter
*
* @author jgy02
*/
public class MainSPresenter implements MainSContact.Presenter {
private static final String TAG = "MainSPresenter";
public class MainServiceModel extends ViewModel {
private static final String TAG = "MainServiceModel";
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private MainSContact.MainView mView;
private Context mContext;
private ContentResolver crv;
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private CacheHelper cacheHelper;
private BehaviorSubject<ActivityEvent> lifecycle;
@@ -63,27 +60,14 @@ public class MainSPresenter implements MainSContact.Presenter {
return lifecycle;
}
public MainSPresenter(Context context) {
public MainServiceModel(Context context) {
this.mContext = context;
this.crv = mContext.getContentResolver();
this.cacheHelper = new CacheHelper(mContext);
Log.e(TAG, "MainSPresenter: " + context.getClass());
}
@Override
public void attachView(@androidx.annotation.NonNull MainSContact.MainView view) {
this.mView = view;
}
public MutableLiveData<Boolean> mLockedStateData = new MutableLiveData<>();
@Override
public void detachView() {
this.mView = null;
}
/**
* 1
*/
@Override
public void getLockedState() {
Log.e(TAG, "getLockedState: ");
if (JgyUtils.getInstance().isAihuaFramework()) {
@@ -102,25 +86,24 @@ public class MainSPresenter implements MainSContact.Presenter {
// if (locked == 0) {
// JgyUtils.getInstance().deleteOtherApp();
// }
mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED);
mLockedStateData.postValue(locked == JGYActions.FRAME_CODE_LOCKED);
}
});
}
@Override
public MutableLiveData<String> mTagData = new MutableLiveData<>();
public void setPushTags() {
NetInterfaceManager.getInstance().setPushTags(getLifecycle(), new NetInterfaceManager.PushTagCallback() {
@Override
public void setPushTag(String tag) {
mView.setTagsFinish(TextUtils.isEmpty(tag));
mTagData.postValue(tag);
}
});
String tagSets = mMMKV.decodeString(CommonConfig.DEVICES_TAG);
Log.e(TAG, "setPushTags: tagSets =" + tagSets);
Set<String> groupTagSets = mMMKV.decodeStringSet(CommonConfig.DEVICES_GROUP_TAG, new HashSet<>());
Log.e(TAG, "setPushTags: groupTagSets = " + groupTagSets);
String tagstring = cacheHelper.getAsString(UrlAddress.GET_DEVICES_TAGS);
Log.e(TAG, "setPushTags: tagstring = " + tagstring);
Set<String> tags = new HashSet<>();
tags.addAll(groupTagSets);
if (!TextUtils.isEmpty(tagSets)) {
@@ -146,39 +129,37 @@ public class MainSPresenter implements MainSContact.Presenter {
});
}
/*
* 2
*/
/**
* 第一次连接
*/
@Override
public void getFirstConnect() {
int first = (int) SPUtils.get(mContext, CommonConfig.JGY_FIRST_CONNECT, 0);
Log.e(TAG, "getFirstConnect: " + "first_connect = " + first);
mView.setFirstConnect(first == 0);
if (first == 0) {
Log.e(TAG, "setDisableSetting: ");
//设置系统管控
SysSettingUtils.setDisableSetting(mContext);
JgyUtils.getInstance().writeAppPackageList();
}
}
/**
* 通过sn获取用户信息
*/
@Override
public void getStudesInfo() {
NetInterfaceManager.getInstance().getStudesInfo(false, getLifecycle(), new NetInterfaceManager.StudesInfoListener() {
NetInterfaceManager.getInstance().getStudesInfo(getLifecycle(), new NetInterfaceManager.StudesInfoListener() {
@Override
public void setStudentsInfo(StudentsInfo studentsInfo) {
mView.setStudesInfo();
}
@Override
public void onComplete() {
// mView.setStudesInfo();
}
});
}
@Override
public void sendNetwork(List<Long> time) {
if (time == null || time.size() == 0) {
Log.e(TAG, "sendNetwork: " + "time empty");
@@ -211,35 +192,25 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void onComplete() {
Log.e("sendNetwork", "onComplete: ");
mView.sendNetworkFinish();
}
});
}
/**
* 3
*/
@Override
public void sendMacAddress() {
NetInterfaceManager.getInstance().sendMACAddress(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().sendMACAddress(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.sendMacFinish();
}
});
}
@Override
public void updateDeviceInfo() {
if (JgyUtils.isOfficialVersion()) {
mView.updateDeviceInfoFinish();
}
// if (!JgyUtils.getInstance().tagEmpty()) {
NetInterfaceManager.getInstance().updateDeviceInfo(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
NetInterfaceManager.getInstance().updateDeviceInfo(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.updateDeviceInfoFinish();
}
});
// }
@@ -248,202 +219,170 @@ public class MainSPresenter implements MainSContact.Presenter {
/**
* 上传安装的应用列表
*/
@Override
public void sendInstalled() {
// if (!JgyUtils.getInstance().tagEmpty()) {
NetInterfaceManager.getInstance().sendInstalledAppInfo(new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.sendInstalledFinish();
}
});
// }
}
/**
* 4
*/
@Override
public void checkAoleyunUpdate() {
NetInterfaceManager.getInstance()
.checkAoleyunUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.checkAoleyunUpdate(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.checkAoleyunUpdateFinish();
}
});
// mView.checkAoleyunUpdateFinish();
}
@Override
public void checkTestUpdate() {
if (!JgyUtils.getInstance().tagEmpty()) {
NetInterfaceManager.getInstance()
.checkTestUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.checkTestUpdate(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.checkTestUpdateFinish();
}
});
}
}
/**
* 5
*/
@Override
public void getDeveloper() {
Log.e(TAG, "getDeveloper: ");
NetInterfaceManager.getInstance()
.getDeveloper(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getDeveloperFinish();
}
});
}
@Override
public void getRomApp() {
String customVersion = Utils.getCustomVersion();
Log.e(TAG, "getROMApp: " + customVersion);
NetInterfaceManager.getInstance()
.getCustomRomApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getCustomRomApp(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getRomAppFinish();
}
});
}
@Override
public MutableLiveData<ScreenLockState> mScreenLockStateData = new MutableLiveData<>();
public void getScreenLockState() {
NetInterfaceManager.getInstance().getScreenLockState(true, getLifecycle(), new NetInterfaceManager.ScreenLockStateListener() {
NetInterfaceManager.getInstance().getScreenLockState(getLifecycle(), new NetInterfaceManager.ScreenLockStateListener() {
@Override
public void setScreenLockState(boolean locked, String tips) {
mView.setScreenLockStateFinish(locked, tips);
public void setScreenLockState(ScreenLockState screenLockState) {
mScreenLockStateData.postValue(screenLockState);
}
});
}
@Override
public void geteFence() {
NetInterfaceManager.getInstance().geElectronicFence(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.geteFenceFinish();
}
});
}
@Override
public void getSystemSettingBegin() {
//重置设备
JgyUtils.getInstance().resetDevice();
Toaster.debugShow("开始获取管控");
mView.setSystemSetting();
}
@Override
public void getAppLimit() {
NetInterfaceManager.getInstance()
.getAppLimit(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getAppLimitFinish();
}
});
}
@Override
public void getForceDownload() {
NetInterfaceManager.getInstance()
.getForceDownload(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getForceDownloadFinish();
}
});
}
@Override
public void getDefaultDesktop() {
Log.e(TAG, "getDefaultDesktop: ");
if (JgyUtils.isOfficialVersion() || !JgyUtils.getInstance().getDeviceIsLocked()) {
Log.e(TAG, "getDefaultDesktop: " + "Device unLocked");
mView.getDefaultDesktopFinish();
} else {
int aihuaUnlock = Settings.System.getInt(mContext.getContentResolver(), CommonConfig.AIHUA_UNLOCK, 0);
if (JgyUtils.getInstance().isAihuaFramework() && aihuaUnlock == 1) {
Log.e(TAG, "getDefaultDesktop: " + "Device aihua");
mView.getDefaultDesktopFinish();
} else {
NetInterfaceManager.getInstance()
.getDefaultDesktop(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getDefaultDesktopFinish();
}
});
}
}
}
@Override
public void setLogoImg() {
if (JgyUtils.isOfficialVersion()) {
mView.setLogoImgFinish();
} else {
NetInterfaceManager.getInstance()
.setLogoImg(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.setLogoImgFinish();
}
});
}
NetInterfaceManager.getInstance()
.setLogoImg(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
}
});
}
@Override
public void getWallpaper() {
NetInterfaceManager.getInstance().getWallpaper(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getWallpaperFinish();
}
});
}
@Override
public void getAllAppList() {
NetInterfaceManager.getInstance()
.getAllAppList(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getAllAppListFinish();
}
});
}
@Override
public void getBrowserBookmarks() {
NetInterfaceManager.getInstance()
.getBookMarkBlackWhiteList(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getBookMarkBlackWhiteList(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getBrowserBookmarksFinish();
}
});
}
@Override
public void getBrowserWhiteList() {
new URLUtils(mContext).setBrowserBlackList();
mView.setBrowserWhiteList();
}
@Override
public void getDesktopIcon() {
NetInterfaceManager.getInstance()
.getDesktopIcon(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@@ -451,161 +390,141 @@ public class MainSPresenter implements MainSContact.Presenter {
public void onComplete() {
Log.e("getDesktopIcon", "onComplete: ");
// JgyUtils.getInstance().hideSystemAPP();
mView.getDesktopIconFinish();
}
});
}
@Override
public void getAppAutoStartUpdateAndNet() {
NetInterfaceManager.getInstance()
.getAppAutoStartUpdateAndNet(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getAppAutoStartUpdateAndNetFinish();
}
});
}
@Override
public void getSnAppAttr() {
NetInterfaceManager.getInstance().getSnAppAttr(new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSnAppAttrFinish();
}
});
}
@Override
public void getAppIdControl() {
NetInterfaceManager.getInstance()
.getAppIDControl(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getAppIDControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getAppIdControlFinish();
}
});
}
@Override
public void setAppinsideWeb() {
Log.e(TAG, "setAppinsideWeb: ");
NetInterfaceManager.getInstance().getAppinsideWeb(new NetInterfaceManager.GetAppinsideWebCallback() {
@Override
public void onComplete() {
Log.e(TAG, "setAppinsideWeb: " + "onComplete");
if (mView != null) {
mView.setAppinsideWebFinish();
}
}
});
}
@Override
public void getSystemSetting() {
NetInterfaceManager.getInstance()
.setSystemSetting(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSystemSettingFinish();
}
});
}
@Override
public void getDefaultApp() {
NetInterfaceManager.getInstance()
.getDefaultApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getDefaultApp(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.setDefaultAppFinish();
}
});
}
@Override
public void setTopApp() {
if (JgyUtils.isOfficialVersion()) {
mView.setTopAppFinish();
return;
}
NetInterfaceManager.getInstance()
.getTopApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getTopApp(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.setTopAppFinish();
}
});
}
@Override
public void getPoweroffTime() {
NetInterfaceManager.getInstance()
.getPoweroffTime(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getPoweroffTime(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.setPoweroffTime();
}
});
}
@Override
public void getSnTimeControl() {
if (JgyUtils.isOfficialVersion()) {
mView.getSnTimeControlFinish();
} else {
NetInterfaceManager.getInstance()
.getSnTimeControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSnTimeControlFinish();
}
});
NetInterfaceManager.getInstance()
.getTimeControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSnTimeControlFinish();
}
});
}
NetInterfaceManager.getInstance()
.getSnTimeControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
}
});
NetInterfaceManager.getInstance()
.getTimeControl(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
}
});
}
@Override
public void getSnSetting() {
NetInterfaceManager.getInstance().getSnSetting(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getSnSettingFinish();
}
});
}
@Override
public void getCloudLessonSettings() {
NetInterfaceManager.getInstance().getCloudLessonSettings(lifecycle, new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
if (mView != null) {
mView.setCloudLessonSettings();
}
}
});
}
@Override
public void getEbagCode() {
NetInterfaceManager.getInstance()
.getEBagCode(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getEBagCode(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getEbagCodeFinish(Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0) == 1);
if (Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0) == 1) {
// getExclusiveAdminApp();
Log.e(TAG, "getEBagCodeFinish: " + "已激活");
} else {
// getBlackList();
Log.e(TAG, "getEBagCodeFinish: " + "未激活");
}
}
});
}
@Override
public void getExclusiveAdminApp() {
NetInterfaceManager.getInstance().getExclusiveAdminAppObservable()
.subscribeOn(Schedulers.io())
@@ -635,38 +554,34 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void onComplete() {
Log.e("getExclusiveAdminApp", "onComplete: ");
mView.getExclusiveAdminAppFinish();
}
});
}
@Override
public void getBlackList() {
NetInterfaceManager.getInstance().getBlackList(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getBlackListFinish();
}
});
}
@Override
public void getWhiteList() {
NetInterfaceManager.getInstance().getWhiteList(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.getWhiteListFinish();
}
});
}
@Override
public void getWiFiPasswd() {
NetInterfaceManager.getInstance()
.getWiFiPasswd(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
.getWiFiPasswd(getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.setWiFiPasswd();
}
});
}

View File

@@ -536,7 +536,7 @@ public class ApkUtils {
this.add("com.aoleyun.browser");
this.add("com.android.music");
this.add("com.android.fmradio");
this.add("com.android.gallery3d");
// this.add("com.android.gallery3d");
this.add("com.android.calendar");
this.add("com.android.calculator2");
this.add("com.android.deskclock");