diff --git a/app/build.gradle b/app/build.gradle index a80eda0..23f145b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,8 +29,8 @@ android { defaultConfig { applicationId "com.aoleyun.sn" - versionCode 130 - versionName "1.4.0515" + versionCode 133 + versionName "1.4.0521" //There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature. minSdkVersion 24 @@ -379,13 +379,13 @@ android { debuggable true versionNameSuffix "-debug" signingConfig signingConfigs.zhanRui - buildConfigField "String", "platform", '"ZhanRuiCube"' + buildConfigField "String", "platform", '"展锐"' } zhanRuiRelease.initWith(release) zhanRuiRelease { signingConfig signingConfigs.zhanRui - buildConfigField "String", "platform", '"ZhanRuiCube"' + buildConfigField "String", "platform", '"展锐"' } //userdebug rom使用这个版本 @@ -394,14 +394,14 @@ android { debuggable true versionNameSuffix "-debug" signingConfig signingConfigs.zhanRuiUserdebug - buildConfigField "String", "platform", '"ZhanRuiCube"' + buildConfigField "String", "platform", '"展锐"' } zhanRuiUserdebugReleas.initWith(release) zhanRuiUserdebugReleas { debuggable true signingConfig signingConfigs.zhanRuiUserdebug - buildConfigField "String", "platform", '"ZhanRuiCube"' + buildConfigField "String", "platform", '"展锐"' } zhanRui12Debug.initWith(debug) @@ -491,10 +491,15 @@ dependencies { implementation 'com.squareup.moshi:moshi:1.9.3' //OkHttp implementation 'com.squareup.okhttp3:okhttp:4.8.0' + implementation 'com.squareup.okhttp3:logging-interceptor:4.9.3' //Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' - implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + implementation 'com.squareup.retrofit2:converter-moshi:2.9.0' implementation 'com.squareup.retrofit2:adapter-rxjava3:2.9.0' + // gson converter + implementation 'com.squareup.retrofit2:converter-gson:2.9.0' + // 标准转换器,去掉 Retrofit以Mutipart上传参数时,String参数会多一对双引号 + implementation 'com.squareup.retrofit2:converter-scalars:2.3.0' //RxJava implementation 'io.reactivex.rxjava3:rxjava:3.0.0' implementation 'io.reactivex.rxjava3:rxandroid:3.0.0' @@ -504,6 +509,8 @@ dependencies { 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.jakewharton.rxbinding4:rxbinding:4.0.0' + implementation 'com.jeremyliao:live-event-bus-x:1.7.3' //implementation "com.uber.autodispose:autodispose:1.3.0" //implementation "com.uber.autodispose:autodispose-android-archcomponents:1.3.0" diff --git a/app/src/beta/res/mipmap-hdpi/ic_launcher.png b/app/src/beta/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index e2eb09e..0000000 Binary files a/app/src/beta/res/mipmap-hdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/beta/res/mipmap-mdpi/ic_launcher.png b/app/src/beta/res/mipmap-mdpi/ic_launcher.png deleted file mode 100644 index e2eb09e..0000000 Binary files a/app/src/beta/res/mipmap-mdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/beta/res/mipmap-xhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xhdpi/ic_launcher.png deleted file mode 100644 index e2eb09e..0000000 Binary files a/app/src/beta/res/mipmap-xhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png deleted file mode 100644 index e2eb09e..0000000 Binary files a/app/src/beta/res/mipmap-xxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index e2eb09e..0000000 Binary files a/app/src/beta/res/mipmap-xxxhdpi/ic_launcher.png and /dev/null differ diff --git a/app/src/beta/res/values/strings.xml b/app/src/beta/res/values/strings.xml deleted file mode 100644 index e75119b..0000000 --- a/app/src/beta/res/values/strings.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - 我的设备测试 - \ No newline at end of file diff --git a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetActivity.java b/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetActivity.java deleted file mode 100644 index 1269b5e..0000000 --- a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetActivity.java +++ /dev/null @@ -1,397 +0,0 @@ -package com.aoleyun.sn.activity.checknet; - -import android.util.Log; -import android.view.KeyEvent; -import android.widget.Button; -import android.widget.TextView; - -import com.aoleyun.sn.R; -import com.aoleyun.sn.base.mvp.BaseMvpActivity; -import com.aoleyun.sn.comm.CommonConfig; -import com.aoleyun.sn.utils.JGYUtils; -import com.aoleyun.sn.utils.SysSettingUtils; -import com.aoleyun.sn.utils.Utils; -import com.blankj.utilcode.util.NetworkUtils; -import com.hjq.toast.Toaster; -import com.tencent.mmkv.MMKV; - -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 BaseMvpActivity 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) - GifImageView giv_2; - @BindView(R.id.giv_3) - GifImageView giv_3; - @BindView(R.id.tv_1) - TextView tv_1; - @BindView(R.id.tv_2) - TextView tv_2; - @BindView(R.id.tv_3) - TextView tv_3; - @BindView(R.id.bt_confirm) - Button bt_confirm; - - private CheckNetPresenter mCheckNetPresenter; - private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); - - @Override - public void onDisconnected() { - Log.e("OnNetworkStatusChanged", "onDisconnected: "); - } - - @Override - public void onConnected(NetworkUtils.NetworkType networkType) { - Log.e("OnNetworkStatusChanged", "onConnected: "); - giv_1.setBackgroundResource(R.drawable.successful); - //直接获取数据 - mCheckNetPresenter.getLockedState(); - } - - @Override - public int getLayoutId() { - return R.layout.activity_checknet; - } - - @Override - protected boolean setNightMode() { - return true; - } - - @Override - protected boolean setfitWindow() { - return false; - } - - @Override - public void initView() { - ButterKnife.bind(this); - mCheckNetPresenter = new CheckNetPresenter(this); - mCheckNetPresenter.attachView(this); - mCheckNetPresenter.setProvider(this); - mCheckNetPresenter.setLifecycle(getLifecycleSubject()); - JGYUtils.startServices(CheckNetActivity.this); - Log.e(TAG, "initView: " + "start request"); - NetworkUtils.registerNetworkStatusChangedListener(this); - checkNetworkIsAvailable(new NetworkInfo() { - @Override - public void isAvailable(boolean available) { - runOnUiThread(() -> { - if (available) { - giv_1.setBackgroundResource(R.drawable.successful); - mCheckNetPresenter.getLockedState(); - } else { - giv_1.setBackgroundResource(R.drawable.failed); - giv_2.setBackgroundResource(R.drawable.failed); - giv_3.setBackgroundResource(R.drawable.failed); - } - }); - } - }); - bt_confirm.setOnClickListener(view -> finish()); - mCheckNetPresenter.getFirstConnect(); - } - - interface NetworkInfo { - void isAvailable(boolean available); - } - - private Disposable mDisposable; - - private void checkNetworkIsAvailable(NetworkInfo networkInfo) { - /** - * start: 开始数值 - * count: 输出值的个数 - * initialDelay: 延迟多少秒执行 - * period: 间隔多久执行一次 - * TimeUnit: 单位设置,NANOSECONDS(纳秒),MICROSECONDS(微秒),MILLISECONDS(毫秒),SECONDS(秒),MINUTES(分钟),HOURS(小时),DAYS(天) - */ - Observable.intervalRange(1, 10, 0, 1500, TimeUnit.MILLISECONDS) - .observeOn(Schedulers.io()) - .subscribe(new Observer() { - @Override - public void onSubscribe(@NonNull Disposable d) { - mDisposable = d; - Log.e("checkNetworkIsAvailable", "onSubscribe: "); - } - - @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: " + "网络无连接"); - } - } - - @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: "); - } - }); - } - - - @Override - public void initData() { - Log.e("getMacAddress", Utils.getAndroid10MAC(this)); - } - - /** - * 首次使用默认关闭所有功能 - * - * @param state - */ - @Override - public void setFirstConnect(boolean state) { - Log.e(TAG, "isFirstConnect: " + "end request "); - Log.e(TAG, "setFirstConnect: " + state); - if (state) { - mCheckNetPresenter.setDisableSetting(); - } else { - - } - } - - - @Override - public void sendMACFinish() { - mCheckNetPresenter.updateDeviceInfo(); - } - - @Override - public void updateDeviceInfoFinish() { - mCheckNetPresenter.getSnTimeControl(); - } - - @Override - public void getSnTimeControlFinish() { - mCheckNetPresenter.getEBagCode(); - } - - @Override - public void getEBagCodeFinish() { - - } - - @Override - public void setPushPlatformTagsFinish() { - mCheckNetPresenter.checkAoleyunUpdate(); - } - - @Override - public void checkAoleyunUpdateFinish() { - mCheckNetPresenter.checkTestUpdate(); - } - - @Override - public void checkTestUpdateFinish() { - - } - - /** - * @param loocked 后台1是锁定,底层0是锁定 - */ - @Override - public void setLockedState(boolean loocked) { - Log.e(TAG, "setLockedState: " + loocked); - //发送设备mac地址和信息 - mCheckNetPresenter.sendMACAddress(); - if (loocked) { - //获取系统管控 - mCheckNetPresenter.setPushTags(); - } else { - SysSettingUtils.setEnableSetting(this); - giv_2.setBackgroundResource(R.drawable.successful); - giv_3.setBackgroundResource(R.drawable.successful); - finish(); - } - } - - /** - * @param noTag 为空,没有,错误都返回true - * 设备可以没有批次,但是没有批次相当于没有数据了,就不执行下面的请求了 - */ - @Override - public void setTagsFinish(boolean noTag) { - if (mCheckNetPresenter.isRequestSuccessful()) { - Log.e(TAG, "setTagsFinish: " + mCheckNetPresenter.isRequestSuccessful()); - giv_2.setBackgroundResource(R.drawable.successful); - } else { - giv_2.setBackgroundResource(R.drawable.failed); - } - if (noTag) { - Log.e(TAG, "setTagsFinished: " + "not set tag"); - } else { - mCheckNetPresenter.getSystemSettingbegin(); - } - } - - @Override - public void getSystemSettingbegin() { - mCheckNetPresenter.getAppLimit(); - } - - @Override - public void getAppLimitFinish() { - mCheckNetPresenter.getAllAppList(); - } - - @Override - public void getAllAppListFinish() { - mCheckNetPresenter.getDeviceBatch(); - } - - @Override - public void getDeviceBatchFinish() { - mCheckNetPresenter.getForceDownload(); - } - - @Override - public void getForceDownloadFinish() { - mCheckNetPresenter.getBrowserList(); - } - - @Override - public void getBrowserListFinish(String whitelist) { - mCheckNetPresenter.getBrowserBookmarks(whitelist); - } - - @Override - public void getBrowserBookmarksFinish() { - mCheckNetPresenter.getBrowserWhiteList(); - mCheckNetPresenter.getDesktopIcon(); - } - - @Override - public void getDesktopIconFinish() { - mCheckNetPresenter.getAppAutoStartUpdateAndNet(); - } - - @Override - public void getAppAutoStartUpdateAndNetFinish() { - mCheckNetPresenter.getSnAppAttr(); - } - - @Override - public void getSnAppAttrFinish() { - mCheckNetPresenter.getAppIDControl(); - } - - @Override - public void getAppIDControlFinish() { - mCheckNetPresenter.setAppinsideWeb(); - } - - @Override - public void setAppinsideWebFinish() { - mCheckNetPresenter.setSystemSetting(); - } - - @Override - public void setSystemSettingFinish() { - mCheckNetPresenter.getDefaultApp(); - } - - @Override - public void setDefaultAppFinish() { - mCheckNetPresenter.getROMApp(); - } - - @Override - public void getROMAppFinish() { - mCheckNetPresenter.getDeveloper(); - } - - @Override - public void getDeveloperFinish() { - mCheckNetPresenter.setLogoImg(); - } - - @Override - public void setLogoImgFinish() { - mCheckNetPresenter.setTopApp(); - } - - @Override - public void setTopAppFinish() { - mCheckNetPresenter.getDefaultDesktop(); - } - - @Override - public void getDefaultDesktopFinish() { - if (mCheckNetPresenter.isRequestSuccessful()) { - giv_3.setBackgroundResource(R.drawable.successful); - } else { - giv_3.setBackgroundResource(R.drawable.failed); - } - mMMKV.encode(CommonConfig.DEVICES_FRIST_START, 0); - } - - @Override - public void setPoweroffTime() { - - } - - @Override - public void setWiFiPasswd() { - - } - - @Override - public void setScreenLockStateFinish(boolean locked, String tips) { - - } - - @Override - protected void onDestroy() { - super.onDestroy(); - mCheckNetPresenter.detachView(); - JGYUtils.startServices(CheckNetActivity.this); - NetworkUtils.unregisterNetworkStatusChangedListener(this); - } - - @Override - public boolean onKeyDown(int keyCode, KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) { - lazyExit(); - return true; - } - return super.onKeyDown(keyCode, event); - } - - private long mPreClickTime; - - private void lazyExit() { - if (System.currentTimeMillis() - mPreClickTime > 3000) { - Toaster.show("再按一次,退出"); - mPreClickTime = System.currentTimeMillis(); - } else { - finish(); - } - } -} diff --git a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetContact.java b/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetContact.java deleted file mode 100644 index f5e3ea9..0000000 --- a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetContact.java +++ /dev/null @@ -1,160 +0,0 @@ -package com.aoleyun.sn.activity.checknet; - -import com.aoleyun.sn.base.mvp.BasePresenter; -import com.aoleyun.sn.base.mvp.BaseView; - -public class CheckNetContact { - public interface Presenter extends BasePresenter { - //1.是否第一次联网 - void getFirstConnect(); - //1.关闭所有功能 - void setDisableSetting(); - - //发送mac地址 - void sendMACAddress(); - //更新设备信息 - void updateDeviceInfo(); - //获取时间管控 - void getSnTimeControl(); - //获取电子书包激活码 - void getEBagCode(); - //设置极光推送平台标签 - void setPushPlatformTags(int platform); - - //获取设备信息更新 - void checkAoleyunUpdate(); - - //获取测试应用更新 - void checkTestUpdate(); - - //开始 - //2.获取设备锁定状态 - void getLockedState(); - //设置极光推送标签 - void setPushTags(); - //获取开发者选项 - void getDeveloper(); - //获取设备后台设置 - void getSystemSettingbegin(); - //获取可被写入的安装包名 - void getAppLimit(); - /*获取所有app详细信息*/ - void getAllAppList(); - //获取设备批次 - void getDeviceBatch(); - //获取强制下载apk - void getForceDownload(); - //获取浏览器上网管控设置 - void getBrowserList(); - //获取浏览器书签设置管控 - void getBrowserBookmarks(String whitelist); - //设置白名单的url - void getBrowserWhiteList(); - //获取应用图标桌面可见性管控 - void getDesktopIcon(); - //获取应用自启升级和网络权限管理 - void getAppAutoStartUpdateAndNet(); - /*获取禁用app*/ - void getSnAppAttr(); - //获取第三方应用子页面ID连网限制 - void getAppIDControl(); - //获取第三方应用内部网页跳转屏蔽 - void setAppinsideWeb(); - //获取系统其他管控设置 - void setSystemSetting(); - //获取系统默认程序设置 - void getDefaultApp(); - //获取自定义版本内置app - void getROMApp(); - //设置开机动画 - void setLogoImg(); - //应用霸屏 - void setTopApp(); - //获取桌面 - void getDefaultDesktop(); - //获取关机时间 - void getPoweroffTime(); - //获取wifi密码 - void getWiFiPasswd(); - /* - * MainService - * */ - //获取屏幕锁状态 - void getScreenLockState(); - } - - public interface MainView extends BaseView { - //1.是否第一次联网 - void setFirstConnect(boolean state); - - //发送mac地址 - void sendMACFinish(); - //更新设备信息 - void updateDeviceInfoFinish(); - //获取时间管控 - void getSnTimeControlFinish(); - //获取电子书包激活码 - void getEBagCodeFinish(); - //设置极光推送平台标签 - void setPushPlatformTagsFinish(); - - //获取设备信息更新 - void checkAoleyunUpdateFinish(); - - //获取测试应用更新 - void checkTestUpdateFinish(); - //开始 - //2.获取设备锁定状态 - void setLockedState(boolean loocked); - //设置极光推送标签 - void setTagsFinish(boolean noTag); - //获取开发者选项结束 - void getDeveloperFinish(); - //设置设备后台设置 - void getSystemSettingbegin(); - //获取可被写入的安装包名结束 - void getAppLimitFinish(); - /*获取所有app详细信息*/ - void getAllAppListFinish(); - //获取设备批次结束 - void getDeviceBatchFinish(); - //获取强制下载apk结束 - void getForceDownloadFinish(); - //获取浏览器上网管控设置结束 - void getBrowserListFinish(String whitelist); - //获取浏览器书签设置管控结束 - void getBrowserBookmarksFinish(); - //获取应用图标桌面可见性管控结束 - void getDesktopIconFinish(); - //获取应用自启升级和网络权限管理结束 - void getAppAutoStartUpdateAndNetFinish(); - /*获取禁用app*/ - void getSnAppAttrFinish(); - //获取第三方应用子页面ID连网限制结束 - void getAppIDControlFinish(); - //获取第三方应用内部网页跳转屏蔽结束 - void setAppinsideWebFinish(); - //获取系统其他管控设置结束 - void setSystemSettingFinish(); - //获取系统默认程序设置 - void setDefaultAppFinish(); - //获取自定义版本内置app - void getROMAppFinish(); - - //设置开机动画 - void setLogoImgFinish(); - //获取应用霸屏结束 - void setTopAppFinish(); - //获取桌面结束 - void getDefaultDesktopFinish(); - //获取关机时间 - void setPoweroffTime(); - //获取wifi密码结束 - void setWiFiPasswd(); - /* - * MainService - * */ - //设置屏幕锁状态结束 - void setScreenLockStateFinish(boolean locked, String tips); - } -} diff --git a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetPresenter.java b/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetPresenter.java deleted file mode 100644 index 04fdaae..0000000 --- a/app/src/main/java/com/aoleyun/sn/activity/checknet/CheckNetPresenter.java +++ /dev/null @@ -1,455 +0,0 @@ -package com.aoleyun.sn.activity.checknet; - -import android.content.ContentResolver; -import android.content.Context; -import android.provider.Settings; -import android.util.Log; - -import com.aoleyun.sn.comm.CommonConfig; -import com.aoleyun.sn.comm.JGYActions; -import com.aoleyun.sn.network.NetInterfaceManager; -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.hjq.toast.Toaster; -import com.trello.rxlifecycle4.LifecycleProvider; -import com.trello.rxlifecycle4.android.ActivityEvent; - -import io.reactivex.rxjava3.subjects.BehaviorSubject; - -/** - * @author jgy - */ -public class CheckNetPresenter implements CheckNetContact.Presenter { - private static final String TAG = CheckNetPresenter.class.getSimpleName(); - private CheckNetContact.MainView mView; - private Context mContext; - private ContentResolver crv; - private NetInterfaceManager mNetInterfaceManager; - - //是否有接口请求成功 - public boolean requestSucceeded = true; - - private LifecycleProvider provider; - - public void setProvider(LifecycleProvider provider) { - this.provider = provider; - } - - public LifecycleProvider getProvider() { - return provider; - } - - private BehaviorSubject lifecycle; - - public void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; - } - - public CheckNetPresenter(Context context) { - this.mContext = context; - this.crv = mContext.getContentResolver(); - this.mNetInterfaceManager = NetInterfaceManager.getInstance(); - Log.e(TAG, "MainPresenter: " + context.getClass()); - } - - public boolean isRequestSuccessful() { - Log.e(TAG, "isRequestSuccessful: " + requestSucceeded); - return requestSucceeded; - } - - @Override - public void attachView(@androidx.annotation.NonNull CheckNetContact.MainView view) { - this.mView = view; - } - - @Override - public void detachView() { - this.mView = null; - } - - /** - * 第一次连接 - */ - @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); - } - - @Override - public void setDisableSetting() { - Log.e(TAG, "setDisableSetting: "); - //设置系统管控 - SysSettingUtils.setDisableSetting(mContext); - } - - @Override - public void sendMACAddress() { - mNetInterfaceManager.sendMACAddress(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.sendMACFinish(); - } - }); - } - - @Override - public void updateDeviceInfo() { - if (JGYUtils.isOfficialVersion()) { - mView.updateDeviceInfoFinish(); - } else { - mNetInterfaceManager.updateDeviceInfo(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.updateDeviceInfoFinish(); - } - }); - } - } - - - @Override - public void getSnTimeControl() { - if (JGYUtils.isOfficialVersion()) { - mView.getSnTimeControlFinish(); - } else { - mNetInterfaceManager.getSnTimeControl(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getSnTimeControlFinish(); - } - }); - } - } - - @Override - public void getEBagCode() { - mNetInterfaceManager.getEBagCode(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getEBagCodeFinish(); - } - }); - } - - @Override - public void getLockedState() { - mNetInterfaceManager.getLockedState(getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - Log.e("getLockedState", "onComplete: "); - int locked = Settings.System.getInt(crv, JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); - Log.e("getLockedState", "locked: " + locked); - mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED); - } - }); - } - - @Override - public void setPushTags() { - mNetInterfaceManager.setPushTags(true, getLifecycle(), new NetInterfaceManager.PushTagCallback() { - @Override - public void setPushTag(String tag) { - Log.e("setPushTags", "onComplete: "); - mView.setTagsFinish(false); - } - }); - } - - @Override - public void setPushPlatformTags(int platform) { - mView.setPushPlatformTagsFinish(); - } - - @Override - public void checkAoleyunUpdate() { - mNetInterfaceManager.checkAoleyunUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.checkAoleyunUpdateFinish(); - } - }); - } - - /** - * 获取灰度测试更新 - */ - @Override - public void checkTestUpdate() { - mNetInterfaceManager.checkTestUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.checkTestUpdateFinish(); - } - }); - } - - - @Override - public void getSystemSettingbegin() { - //重置设备 - JGYUtils.getInstance().resetDevice(); - mView.getSystemSettingbegin(); - Toaster.debugShow("开始获取管控"); - } - - @Override - public void getAppLimit() { - mNetInterfaceManager.getAppLimit(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getAppLimitFinish(); - } - }); - } - - @Override - public void getAllAppList() { - NetInterfaceManager.getInstance() - .getAllAppList(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getAllAppListFinish(); - } - }); - } - - @Override - public void getDeviceBatch() { - int locked = Settings.System.getInt(crv, JGYActions.ACTION_QCH_UNLOCK_IPAD, 0); - Log.e(TAG, "getDeviceBatch: " + locked); - if (locked == 0) { -// JGYUtils.getInstance().deleteOtherApp(); - mView.getDeviceBatchFinish(); - } - } - - @Override - public void getForceDownload() { - mNetInterfaceManager.getForceDownload(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getForceDownloadFinish(); - } - }); - } - - // TODO: 2021/6/8 使用现有代码会影响浏览器主页管控 -// @Override -// public void getBrowserList() { -//// if (JGYUtils.isOfficialVersion()) { -// SetBrowserList(); -//// } else { -//// NewSetBrowserList(); -//// } -// } - - @Override - public void getBrowserList() { - Log.e(TAG, "getBrowserList: "); - mView.getBrowserListFinish(""); - } - - @Override - public void getBrowserBookmarks(String whitelist) { - mNetInterfaceManager.getBookMarkBlackWhiteList(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getBrowserBookmarksFinish(); - } - }); - } - - @Override - public void getBrowserWhiteList() { - new URLUtils(mContext).setBrowserBlackList(); - } - - @Override - public void getDesktopIcon() { - mNetInterfaceManager.getDesktopIcon(getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { -// JGYUtils.getInstance().hideSystemAPP(); - mView.getDesktopIconFinish(); - } - }); - } - - @Override - public void getAppAutoStartUpdateAndNet() { - mNetInterfaceManager.getAppAutoStartUpdateAndNet(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getAppAutoStartUpdateAndNetFinish(); - } - }); - } - - @Override - public void getSnAppAttr() { - mNetInterfaceManager.getSnAppAttr(new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getSnAppAttrFinish(); - } - }); - } - - @Override - public void getAppIDControl() { - mNetInterfaceManager.getAppIDControl(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getAppIDControlFinish(); - } - }); - } - - @Override - public void setAppinsideWeb() { - Log.e(TAG, "setAppinsideWeb: "); - mNetInterfaceManager.getAppinsideWeb(new NetInterfaceManager.GetAppinsideWebCallback() { - @Override - public void onComplete() { - Log.e(TAG, "setAppinsideWeb: " + "onComplete"); - if (mView != null) { - mView.setAppinsideWebFinish(); - } - } - }); - } - - - @Override - public void setSystemSetting() { - mNetInterfaceManager.setSystemSetting(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setSystemSettingFinish(); - } - }); - } - - @Override - public void getDefaultApp() { - mNetInterfaceManager.getDefaultApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setDefaultAppFinish(); - } - }); - } - - @Override - public void getROMApp() { - mNetInterfaceManager.getCustomROMApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getROMAppFinish(); - } - }); - } - - @Override - public void getDeveloper() { - mNetInterfaceManager.getDeveloper(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getDeveloperFinish(); - } - }); - } - - @Override - public void setLogoImg() { - if (JGYUtils.isOfficialVersion()) { - mView.setLogoImgFinish(); - } else { - mNetInterfaceManager.setLogoImg(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setLogoImgFinish(); - } - }); - } - } - - @Override - public void setTopApp() { - if (JGYUtils.isOfficialVersion()) { - mView.setTopAppFinish(); - - } else { - mNetInterfaceManager.getTopApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setTopAppFinish(); - } - }); - } - } - - @Override - synchronized public void getScreenLockState() { - mNetInterfaceManager.getScreenLockState(true, getLifecycle(), new NetInterfaceManager.ScreenLockStateListener() { - @Override - public void setScreenLockState(boolean locked, String tips) { - mView.setScreenLockStateFinish(locked, tips); - } - }); - } - - @Override - public void getDefaultDesktop() { - Log.e(TAG, "getDefaultDesktop: "); - if (JGYUtils.isOfficialVersion() || JGYUtils.getInstance().getDeviceIsLocked()) { - mNetInterfaceManager.getAppLimit(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - - } - }); - mView.getDefaultDesktopFinish(); - } else { - int aihuaUnlock = Settings.System.getInt(mContext.getContentResolver(), CommonConfig.AIHUA_UNLOCK, 0); - if (JGYUtils.getInstance().isAihuaFramwwork() && aihuaUnlock == 1) { - mView.getDefaultDesktopFinish(); - } else { - mNetInterfaceManager.getDefaultDesktop(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getDefaultDesktopFinish(); - } - }); - } - } - } - - @Override - public void getPoweroffTime() { - mNetInterfaceManager.getPoweroffTime(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setPoweroffTime(); - } - }); - } - - @Override - public void getWiFiPasswd() { - mNetInterfaceManager.getWiFiPasswd(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setWiFiPasswd(); - } - }); - } -} diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainAContact.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainAContact.java deleted file mode 100644 index 29e1026..0000000 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainAContact.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.aoleyun.sn.activity.main; - -import android.graphics.Bitmap; -import android.view.View; - -import com.aoleyun.sn.base.mvp.BasePresenter; -import com.aoleyun.sn.base.mvp.BaseView; -import com.aoleyun.sn.bean.StudentsInfo; -import com.google.gson.JsonObject; - -public class MainAContact { - public interface Presenter extends BasePresenter { - /*获取设备锁定状态*/ - void getLockedState(); - /*获取学生信息*/ - void getStudesInfo(); - /*获取电子书包激活码*/ - void getEBagCode(); - /*获取学习应用*/ - void getExclusiveAdminApp(); - /*获取公网ip*/ - void getPublicIp(); - /*手动获取设备信息更新*/ - void buttonCheckUpdate(View view); - /*获取设备信息更新*/ - void checkAoleyunUpdate(); - /*获取测试应用更新*/ - void checkTestUpdate(); - /*获取桌面*/ - void getDefaultDesktop(); - /*获取系统默认程序设置*/ - void getDefaultApp(); - } - - public interface MainView extends BaseView { - /*获取设备锁定状态*/ - void setLockedState(boolean loocked); - /*获取学生信息*/ - void setStudesInfo(StudentsInfo studesInfo); - /*获取电子书包激活码*/ - void getEBagCodeFinish(boolean activation); - /*获取学习应用*/ - void getExclusiveAdminAppFinish(); - /*获取公网ip*/ - void setPublicIp(String ip); - /*手动获取设备信息更新*/ - void buttonCheckUpdateFinish(boolean update, JsonObject jsonObject); - /*获取设备信息更新*/ - void checkAoleyunUpdateFinish(); - /*获取测试应用更新*/ - void checkTestUpdateFinish(); - /*获取桌面结束*/ - void getDefaultDesktopFinish(); - /*获取系统默认程序设置*/ - void setDefaultAppFinish(); - } -} diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java deleted file mode 100644 index d30f353..0000000 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainAPresenter.java +++ /dev/null @@ -1,273 +0,0 @@ -package com.aoleyun.sn.activity.main; - -import android.content.Context; -import android.content.pm.PackageInfo; -import android.content.pm.PackageManager; -import android.graphics.Bitmap; -import android.provider.Settings; -import android.util.Log; -import android.view.View; - -import com.aoleyun.sn.BuildConfig; -import com.aoleyun.sn.bean.AdminAppInfo; -import com.aoleyun.sn.bean.AppUpdateInfo; -import com.aoleyun.sn.bean.BaseResponse; -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.Utils; -import com.google.gson.Gson; -import com.google.gson.JsonObject; -import com.google.gson.JsonParser; -import com.trello.rxlifecycle4.RxLifecycle; -import com.trello.rxlifecycle4.android.ActivityEvent; - -import java.util.List; - -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; - -/** - * MainActivity1 的 Presenter - * - * @author jgy - */ -public class MainAPresenter implements MainAContact.Presenter { - private static final String TAG = MainAPresenter.class.getSimpleName(); - private MainAContact.MainView mView; - private Context mContext; - - private final int OK = 200; - - private BehaviorSubject lifecycle; - - public void setLifecycle(BehaviorSubject lifecycle) { - this.lifecycle = lifecycle; - } - - public BehaviorSubject getLifecycle() { - return lifecycle; - } - - public MainAPresenter(Context context) { - this.mContext = context; - Log.e(TAG, "MainSPresenter: " + context.getClass()); - } - - @Override - public void attachView(@androidx.annotation.NonNull MainAContact.MainView view) { - this.mView = view; - } - - @Override - public void detachView() { - this.mView = null; - this.mContext = null; - } - - @Override - public void getLockedState() { - NetInterfaceManager.getInstance() - .getLockedState(getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - Log.e("getLockedState", "onComplete: "); - int locked = Settings.System.getInt(mContext.getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); - Log.e("getLockedState", "locked: " + locked); - mView.setLockedState(locked == JGYActions.FRAME_CODE_LOCKED); - } - }); - } - - /** - * 通过sn获取用户信息 - */ - @Override - public void getStudesInfo() { - NetInterfaceManager.getInstance().getStudesInfo(true, getLifecycle(), new NetInterfaceManager.StudesInfoListener() { - @Override - public void setStudentsInfo(StudentsInfo studentsInfo) { - mView.setStudesInfo(studentsInfo); - } - - @Override - public void onComplete() { - - } - }); - } - - @Override - public void getEBagCode() { - NetInterfaceManager.getInstance().getEBagCode(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getEBagCodeFinish(Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0) == 1); - } - }); - } - - @Override - public void getExclusiveAdminApp() { - NetInterfaceManager.getInstance().getExclusiveAdminAppObservable() - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) - .subscribe(new Observer>>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("getAdminApp", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse> listBaseResponse) { - Log.e("getAdminApp", "onNext: " + listBaseResponse); - if (listBaseResponse.code == 200) { - List adminAppInfos = listBaseResponse.data; - JGYUtils.getInstance().installAdminApp(adminAppInfos); - } - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("getAdminApp", "onError: " + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("getAdminApp", "onComplete: "); - mView.getExclusiveAdminAppFinish(); - } - }); - } - - @Override - public void getPublicIp() { - NetInterfaceManager.getInstance().getPublicIp(lifecycle, ip -> mView.setPublicIp(ip)); - } - - @Override - public void buttonCheckUpdate(View view) { - checkUpdateInfo(); - } - - @Override - public void checkAoleyunUpdate() { - checkUpdateInfo(); - NetInterfaceManager.getInstance() - .checkAoleyunUpdate(true, 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() { - @Override - public void onComplete() { - mView.checkTestUpdateFinish(); - } - }); - } else { - Log.e(TAG, "checkTestUpdate: tag is Empty"); - } - } - - @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().isAihuaFramwwork() && aihuaUnlock == 1) { - Log.e(TAG, "getDefaultDesktop: " + "Device aihua"); - mView.getDefaultDesktopFinish(); - } else { - NetInterfaceManager.getInstance() - .getDefaultDesktop(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.getDefaultDesktopFinish(); - } - }); - } - } - } - - @Override - public void getDefaultApp() { - NetInterfaceManager.getInstance() - .getDefaultApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { - @Override - public void onComplete() { - mView.setDefaultAppFinish(); - } - }); - } - - private void checkUpdateInfo() { - NetInterfaceManager.getInstance() - .getUpdateApi() - .getUpdate(BuildConfig.APPLICATION_ID, - JGYUtils.getInstance().checkAppPlatform()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) - .subscribe(new Observer>() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("checkUpdateInfo", "onSubscribe: "); - } - - @Override - public void onNext(@NonNull BaseResponse response) { - Log.e("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("checkUpdateInfo", "onError: " + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("checkUpdateInfo", "onComplete: "); - } - }); - } -} diff --git a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java index c5ffdc3..b09eaf3 100644 --- a/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java +++ b/app/src/main/java/com/aoleyun/sn/activity/main/MainActivity.java @@ -1,6 +1,5 @@ package com.aoleyun.sn.activity.main; -import android.annotation.SuppressLint; import android.app.AlertDialog; import android.content.BroadcastReceiver; import android.content.ComponentName; @@ -9,10 +8,6 @@ import android.content.Intent; import android.content.IntentFilter; import android.content.ServiceConnection; import android.graphics.Bitmap; -import android.net.ConnectivityManager; -import android.net.NetworkInfo; -import android.net.wifi.WifiInfo; -import android.net.wifi.WifiManager; import android.os.Build; import android.os.IBinder; import android.os.SystemClock; @@ -24,11 +19,14 @@ import android.view.KeyEvent; import android.view.View; import android.view.WindowManager; +import androidx.lifecycle.Observer; + import com.aoleyun.sn.BuildConfig; import com.aoleyun.sn.R; import com.aoleyun.sn.activity.requestlog.RequestLogActivity; import com.aoleyun.sn.activity.update.UpdateActivity; import com.aoleyun.sn.base.mvvm.BaseMvvmActivity; +import com.aoleyun.sn.bean.AppSettings; import com.aoleyun.sn.bean.StudentsInfo; import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; @@ -37,10 +35,10 @@ import com.aoleyun.sn.databinding.ActivityMainBinding; import com.aoleyun.sn.dialog.UpdateDialog; import com.aoleyun.sn.service.main.MainService; import com.aoleyun.sn.utils.ApkUtils; +import com.aoleyun.sn.utils.GlideLoadUtils; import com.aoleyun.sn.utils.JGYUtils; import com.aoleyun.sn.utils.SPUtils; import com.aoleyun.sn.utils.SysSettingUtils; -import com.aoleyun.sn.utils.TimeUtils; import com.aoleyun.sn.utils.Utils; import com.blankj.utilcode.util.NetworkUtils; import com.bumptech.glide.Glide; @@ -48,21 +46,7 @@ import com.google.gson.JsonObject; import com.hjq.toast.Toaster; import com.tencent.mmkv.MMKV; -import java.util.concurrent.TimeUnit; - -import butterknife.OnClick; -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 static android.os.BatteryManager.EXTRA_LEVEL; -import static android.os.BatteryManager.EXTRA_VOLTAGE; - -public class MainActivity extends BaseMvvmActivity implements MainAContact.MainView, NetworkUtils.OnNetworkStatusChangedListener { +public class MainActivity extends BaseMvvmActivity implements NetworkUtils.OnNetworkStatusChangedListener { private static final String TAG = MainActivity.class.getSimpleName(); private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE); @@ -113,9 +97,6 @@ public class MainActivity extends BaseMvvmActivity 4) { -// tv_number_name.setText(sn.substring(sn.length() - 4)); - } else { -// tv_number_name.setText(sn); - } - } - } else { - } - // setStoreUpdateListener(bt_checkupdate); - registerReceiver(); + JGYUtils.startServices(MainActivity.this); if (BuildConfig.DEBUG) { -// ApkUtils.openPackage(MainActivity.this,"com.android.calculator2","com.android.calculator2.Calculator"); -// ApkUtils.openPackage(MainActivity.this,"com.android.documentsui","com.android.documentsui.LauncherActivity"); -// ApkUtils.openPackage(MainActivity.this,"com.jxw.wuweijidanci","com.jxw.wuweijidanci.MainActivity"); -// ApkUtils.openPackage(MainActivity.this,"com.jxw.singsound","com.jxw.singsound.ui.SplashActivity"); + Settings.Global.putInt(getContentResolver(), Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 1); + Settings.Global.putInt(getContentResolver(), Settings.Global.ADB_ENABLED, 1); } - } - - private void setStoreUpdateListener(View view) { - ObservableOnSubscribe mObservableOnSubscribe = new ObservableOnSubscribe() { - @Override - public void subscribe(@NonNull ObservableEmitter emitter) throws Throwable { - view.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - if (updateApp) { - Toaster.show("你已经检查过更新,请稍后再试"); - } else { - emitter.onNext(view); - } - } - }); - } - }; - Observer mObserver = new Observer() { - @Override - public void onSubscribe(@NonNull Disposable d) { - Log.e("mObserver", "onSubscribe"); - } - - @Override - public void onNext(@NonNull View view) { - Log.e("mObserver", "onNext"); - Toaster.show("正在检查更新"); -// mMainAPresenter.buttonCheckUpdate(bt_checkupdate); - } - - @Override - public void onError(@NonNull Throwable e) { - Log.e("mObserver", "onError" + e.getMessage()); - onComplete(); - } - - @Override - public void onComplete() { - Log.e("mObserver", "onComplete"); - } - }; - - Observable.create(mObservableOnSubscribe) - .throttleFirst(10, TimeUnit.SECONDS) - //这句很关键,这是RxJava中的操作符,在规定时间内观察者不在接收被观察者发送的事件 - .subscribe(mObserver); + registerReceiver(); } private void getDevicesInfo() { @@ -256,7 +174,7 @@ public class MainActivity extends BaseMvvmActivity() { + @Override + public void onChanged(Boolean aBoolean) { + Log.e(TAG, "setLockedState: " + aBoolean); + if (aBoolean) { + mViewModel.getStudesInfo(); + } else { + setNumberText("", View.GONE); + setNameText("", View.GONE); + setClassText("", View.GONE); + setBatchText("", View.GONE); + SysSettingUtils.setEnableSetting(MainActivity.this); + } + mViewModel.getEBagCode(); + } + }); + mViewModel.getStudentsInfoData().observe(this, new Observer() { + @Override + public void onChanged(StudentsInfo studentsInfo) { + if (studentsInfo == null) { + mViewDataBinding.tvActivationTime.setText("未激活"); + return; + } + long activation_time = studentsInfo.getActivation_time(); +// mViewDataBinding.tvActivationTime.setText("激活时间:" + TimeUtils.getActivationTime(activation_time)); + + int trade_type = studentsInfo.getTrade_type(); + String sno = studentsInfo.getSno(); + String realname = studentsInfo.getRealname(); + String classes = studentsInfo.getClasses(); + String batch = studentsInfo.getBatch(); + String head_img = studentsInfo.getHead_img(); + int bind_statu = studentsInfo.getBind_status(); + if (bind_statu == 1) { + String phone = studentsInfo.getBind_mobile(); + mViewDataBinding.tvBindStatus.setText("绑定号码:" + phone); + } else { + mViewDataBinding.tvBindStatus.setText("未绑定"); + } + + if (TextUtils.isEmpty(sno)) { + setNumberText("未设置", View.GONE); + } else { + setNumberText(sno, View.VISIBLE); + } + if (TextUtils.isEmpty(realname)) { + setNameText("未设置", View.GONE); + } else { + setNameText(realname, View.VISIBLE); + } + if (TextUtils.isEmpty(classes)) { + setClassText("未设置", View.GONE); + } else { + setClassText(classes, View.VISIBLE); + } + if (TextUtils.isEmpty(batch)) { + setBatchText("未设置", View.GONE); + } else { + setBatchText(batch, View.VISIBLE); + } + if (TextUtils.isEmpty(head_img)) { + setIv_head(""); + } else { + setIv_head(head_img); + } + SPUtils.put(MainActivity.this, CommonConfig.ADMIN_ID, studentsInfo.getAdmin_id()); + } + }); + mViewModel.getEBagCodeData().observe(this, new Observer() { + @Override + public void onChanged(Boolean aBoolean) { + if (aBoolean) { + mViewModel.getExclusiveAdminApp(); + Log.e(TAG, "getEBagCodeFinish: " + "已激活"); + } else { + Log.e(TAG, "getEBagCodeFinish: " + "未激活"); + } + } + }); + mViewModel.getUpdateInfoData().observe(this, new Observer() { + @Override + public void onChanged(JsonObject jsonObject) { + showUpdateDialog(jsonObject); + } + }); + mViewModel.getQrCodeData().observe(this, new androidx.lifecycle.Observer() { @Override public void onChanged(Bitmap bitmap) { @@ -324,7 +339,23 @@ public class MainActivity extends BaseMvvmActivity() { + @Override + public void onChanged(Boolean aBoolean) { + if (aBoolean) { + mViewDataBinding.clBindinfo.setVisibility(View.VISIBLE); + } else { + mViewDataBinding.clBindinfo.setVisibility(View.GONE); + } + } + }); + mViewModel.getAppSettingsData().observe(this, new Observer() { + @Override + public void onChanged(AppSettings appSettings) { + mViewDataBinding.setAppSettings(appSettings); + } + }); } MainService.MainBinder mMainBinder; @@ -343,106 +374,6 @@ public class MainActivity extends BaseMvvmActivity Toaster.show("已经是最新版本")); - } - } - - @Override - public void checkAoleyunUpdateFinish() { - Log.e(TAG, "checkAoleyunUpdateFinish: "); - mMainAPresenter.checkTestUpdate(); - } - - @Override - public void checkTestUpdateFinish() { - Log.e(TAG, "checkTestUpdateFinish: "); - mMainAPresenter.getDefaultDesktop(); - } - - @Override - public void getDefaultDesktopFinish() { - Log.e(TAG, "getDefaultDesktopFinish: "); - mMainAPresenter.getDefaultApp(); - } - - @Override - public void setDefaultAppFinish() { - Log.e(TAG, "setDefaultAppFinish: "); - } - private void showUpdateDialog(JsonObject jsonObject) { UpdateDialog dialog = new UpdateDialog(this); dialog.setMessage(String.format(getString(R.string.upgrade_app), jsonObject.get("version_name").getAsString())) @@ -533,30 +428,6 @@ public class MainActivity extends BaseMvvmActivity { + private static final String TAG = MainViewModel.class.getSimpleName(); + @Override public ActivityMainBinding getVDBinding() { return binding; @@ -23,16 +51,307 @@ public class MainViewModel extends BaseViewModel mQrCodeData =new MutableLiveData<>(); + public void init() { + checkUpdateInfo(); + checkAoleyunUpdate(); + checkTestUpdate(); + getDefaultDesktop(); + getDefaultApp(); + } + + private MutableLiveData mLockedData = new MutableLiveData<>(); + + public MutableLiveData getLockedData() { + return mLockedData; + } + + public void getLockedState() { + NetInterfaceManager.getInstance() + .getLockedState(getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + Log.e("getLockedState", "onComplete: "); + int locked = Settings.System.getInt(getCtx().getContentResolver(), JGYActions.ACTION_QCH_UNLOCK_IPAD, JGYActions.FRAME_CODE_LOCKED); + Log.e("getLockedState", "locked: " + locked); + mLockedData.setValue(locked == JGYActions.FRAME_CODE_LOCKED); + } + }); + } + + private MutableLiveData mStudentsInfoData = new MutableLiveData<>(); + + public MutableLiveData getStudentsInfoData() { + return mStudentsInfoData; + } + + /** + * 通过sn获取用户信息 + */ + public void getStudesInfo() { + NetInterfaceManager.getInstance().getStudesInfo(true, getLifecycle(), new NetInterfaceManager.StudesInfoListener() { + @Override + public void setStudentsInfo(StudentsInfo studentsInfo) { + mStudentsInfoData.setValue(studentsInfo); + } + + @Override + public void onComplete() { + + } + }); + } + + private MutableLiveData mEBagCodeData = new MutableLiveData<>(); + + public MutableLiveData getEBagCodeData() { + return mEBagCodeData; + } + + public void getEBagCode() { + NetInterfaceManager.getInstance().getEBagCode(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + mEBagCodeData.setValue(Settings.Global.getInt(getCtx().getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0) == 1); + } + }); + } + + + public void getExclusiveAdminApp() { + NetInterfaceManager.getInstance().getExclusiveAdminAppObservable() + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getAdminApp", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse> listBaseResponse) { + Log.e("getAdminApp", "onNext: " + listBaseResponse); + if (listBaseResponse.code == 200) { + List adminAppInfos = listBaseResponse.data; + JGYUtils.getInstance().installAdminApp(adminAppInfos); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getAdminApp", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getAdminApp", "onComplete: "); + } + }); + } + + private MutableLiveData mUpdateInfoData = new MutableLiveData<>(); + + public MutableLiveData getUpdateInfoData() { + return mUpdateInfoData; + } + + public void checkUpdateInfo() { + NetInterfaceManager.getInstance() + .getUpdateApi() + .getUpdate(BuildConfig.APPLICATION_ID, + JGYUtils.getInstance().checkAppPlatform()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("checkUpdateInfo", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse response) { + Log.e("checkUpdateInfo", "onNext: " + response); + if (response.code == 200) { + JsonObject jsonObject = JsonParser.parseString(new Gson().toJson(response.data)).getAsJsonObject(); + long versionCode = jsonObject.get("version_code").getAsLong(); + PackageManager pm = getCtx().getPackageManager(); + PackageInfo info = null; + try { + info = pm.getPackageInfo(BuildConfig.APPLICATION_ID, 0); + } catch (PackageManager.NameNotFoundException e) { + e.printStackTrace(); + } + if (null == info || info.versionCode < versionCode) { + mUpdateInfoData.setValue(jsonObject); + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("checkUpdateInfo", "onError: " + e.getMessage()); + onComplete(); + } + + @Override + public void onComplete() { + Log.e("checkUpdateInfo", "onComplete: "); + } + }); + } + + public void checkAoleyunUpdate() { + NetInterfaceManager.getInstance() + .checkAoleyunUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + + } + }); + } + + public void checkTestUpdate() { + if (!JGYUtils.getInstance().tagEmpty()) { + NetInterfaceManager.getInstance() + .checkTestUpdate(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + + } + }); + } else { + Log.e(TAG, "checkTestUpdate: tag is Empty"); + } + } + + public void getDefaultDesktop() { + Log.e(TAG, "getDefaultDesktop: "); + if (JGYUtils.isOfficialVersion() || !JGYUtils.getInstance().getDeviceIsLocked()) { + Log.e(TAG, "getDefaultDesktop: " + "Device unLocked"); + + } else { + int aihuaUnlock = Settings.System.getInt(getCtx().getContentResolver(), CommonConfig.AIHUA_UNLOCK, 0); + if (JGYUtils.getInstance().isAihuaFramwwork() && aihuaUnlock == 1) { + Log.e(TAG, "getDefaultDesktop: " + "Device aihua"); + + } else { + NetInterfaceManager.getInstance() + .getDefaultDesktop(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + + } + }); + } + } + } + + public void getDefaultApp() { + NetInterfaceManager.getInstance() + .getDefaultApp(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() { + @Override + public void onComplete() { + + } + }); + } + + + private MutableLiveData mQrCodeData = new MutableLiveData<>(); public MutableLiveData getQrCodeData() { return mQrCodeData; } - public void getQrCode(){ + public void getQrCode() { String encryptString = CXAESUtil.encrypt(CommonConfig.AES_KEY, Utils.getSerial(getCtx())); Log.e("getQRCode", "setImageAndText: " + encryptString); Bitmap bitmap = Utils.createQRImage(encryptString, 400, 400); mQrCodeData.setValue(bitmap); } + + public void getPublicIp() { + NetInterfaceManager.getInstance().getPublicIp(getLifecycle(), new NetInterfaceManager.PublicIpCallbak() { + @Override + public void getPublicIp(String ip) { + + } + }); + } + + private MutableLiveData mShowPanel = new MutableLiveData<>(); + + public MutableLiveData getShowPanel() { + return mShowPanel; + } + + public void setBindInfoPanel() { + NetInterfaceManager.getInstance().getSystemSettingObservable() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("setBindInfoPanel", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse baseResponse) { + Log.e("setBindInfoPanel", "onNext: " + baseResponse); + if (baseResponse.code == 200) { + JsonObject jsonObject = GsonUtils.getJsonObject(GsonUtils.toJSONString(baseResponse.data)); + JsonElement jsonElement = jsonObject.get("is_control_show"); + if (jsonElement != null && !jsonElement.isJsonNull()) { + int is_control_show = jsonElement.getAsInt(); + mShowPanel.setValue(is_control_show == 1); + } + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("setBindInfoPanel", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("setBindInfoPanel", "onComplete: "); + } + }); + } + + private MutableLiveData mAppSettingsData = new MutableLiveData<>(); + + public MutableLiveData getAppSettingsData() { + return mAppSettingsData; + } + + public void getAppSettings() { + NetInterfaceManager.getInstance().getAppSettingObservable() + .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY)) + .subscribe(new Observer>() { + @Override + public void onSubscribe(@NonNull Disposable d) { + Log.e("getAppSettings", "onSubscribe: "); + } + + @Override + public void onNext(@NonNull BaseResponse appSettingsBaseResponse) { + Log.e("getAppSettings", "onNext: " + appSettingsBaseResponse); + if (appSettingsBaseResponse.code == 200) { + mAppSettingsData.setValue(appSettingsBaseResponse.data); + } + } + + @Override + public void onError(@NonNull Throwable e) { + Log.e("getAppSettings", "onError: " + e.getMessage()); + } + + @Override + public void onComplete() { + Log.e("getAppSettings", "onComplete: "); + } + }); + } } diff --git a/app/src/main/java/com/aoleyun/sn/bean/AppSettings.java b/app/src/main/java/com/aoleyun/sn/bean/AppSettings.java new file mode 100644 index 0000000..47267ac --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/bean/AppSettings.java @@ -0,0 +1,99 @@ +package com.aoleyun.sn.bean; + +import java.io.Serializable; + +public class AppSettings implements Serializable { + private static final long serialVersionUID = -3501100183295519224L; + + // APP图标 + String app_icon; + // 小程序二维码 + String mini_qrcode; + // 日志功能开关 1 开 0 关 + int logs_control; + // 定义批次名称 1 开启 0 关闭 + int custom_batch_control; + //批次名称 + String custom_batch_name; + // 定义班级开关 1 开 0 关 + int custom_class_control; + //班级名称 + String custom_class_name; + // 定义学号开关 1 开 0 关 + int custom_number_control; + //学号名称 + String custom_number_name; + + + public String getApp_icon() { + return app_icon; + } + + public void setApp_icon(String app_icon) { + this.app_icon = app_icon; + } + + public String getMini_qrcode() { + return mini_qrcode; + } + + public void setMini_qrcode(String mini_qrcode) { + this.mini_qrcode = mini_qrcode; + } + + public int getLogs_control() { + return logs_control; + } + + public void setLogs_control(int logs_control) { + this.logs_control = logs_control; + } + + public int getCustom_batch_control() { + return custom_batch_control; + } + + public void setCustom_batch_control(int custom_batch_control) { + this.custom_batch_control = custom_batch_control; + } + + public String getCustom_batch_name() { + return custom_batch_name; + } + + public void setCustom_batch_name(String custom_batch_name) { + this.custom_batch_name = custom_batch_name; + } + + public int getCustom_class_control() { + return custom_class_control; + } + + public void setCustom_class_control(int custom_class_control) { + this.custom_class_control = custom_class_control; + } + + public String getCustom_class_name() { + return custom_class_name; + } + + public void setCustom_class_name(String custom_class_name) { + this.custom_class_name = custom_class_name; + } + + public int getCustom_number_control() { + return custom_number_control; + } + + public void setCustom_number_control(int custom_number_control) { + this.custom_number_control = custom_number_control; + } + + public String getCustom_number_name() { + return custom_number_name; + } + + public void setCustom_number_name(String custom_number_name) { + this.custom_number_name = custom_number_name; + } +} diff --git a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java index 18f8fca..347b89d 100644 --- a/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java +++ b/app/src/main/java/com/aoleyun/sn/disklrucache/CacheHelper.java @@ -108,7 +108,7 @@ public class CacheHelper { public void put(String key, String value) { Log.e(TAG, "put: " + key); - mMMKV.encode(key, System.currentTimeMillis()); + mMMKV.encode(key + "_time", System.currentTimeMillis()); mMMKV.encode(key + "_mmkv", value); DiskLruCache.Editor edit = null; diff --git a/app/src/main/java/com/aoleyun/sn/manager/ConnectManager.java b/app/src/main/java/com/aoleyun/sn/manager/ConnectManager.java index e802b22..730c76d 100644 --- a/app/src/main/java/com/aoleyun/sn/manager/ConnectManager.java +++ b/app/src/main/java/com/aoleyun/sn/manager/ConnectManager.java @@ -102,7 +102,7 @@ public class ConnectManager { return false; } long nowTime = System.currentTimeMillis(); - long lastTime = mMMKV.decodeLong(key); + long lastTime = mMMKV.decodeLong(key + "_time"); // long lastTime = (long) SPUtils.get(mContext, key, 0L); Log.e(TAG, "isNeedConnect: key = " + key + "\ttime = " + lastTime); long intervalTime = getConnectModeTime(connectMode); diff --git a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java index dffe963..d13602c 100644 --- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java +++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java @@ -8,6 +8,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageInfo; import android.content.pm.PackageManager; +import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.os.Build; import android.provider.Settings; @@ -27,6 +28,7 @@ import com.aoleyun.sn.bean.AppDateInfo; import com.aoleyun.sn.bean.AppID; import com.aoleyun.sn.bean.AppLimit; import com.aoleyun.sn.bean.AppListInfo; +import com.aoleyun.sn.bean.AppSettings; import com.aoleyun.sn.bean.AppUpdateInfo; import com.aoleyun.sn.bean.Appground; import com.aoleyun.sn.bean.BaseResponse; @@ -63,6 +65,7 @@ import com.aoleyun.sn.manager.ConnectManager; import com.aoleyun.sn.manager.ConnectMode; import com.aoleyun.sn.network.api.GetWhoisApi; import com.aoleyun.sn.network.api.aolelearn.ExclusiveAdminAppApi; +import com.aoleyun.sn.network.api.get.AppSettingApi; import com.aoleyun.sn.network.api.get.CheckTestUpdateApi; import com.aoleyun.sn.network.api.get.CloudLessonApi; import com.aoleyun.sn.network.api.get.CloudLessonAppApi; @@ -718,6 +721,13 @@ public class NetInterfaceManager { .observeOn(AndroidSchedulers.mainThread()); } + public Observable> getAppSettingObservable() { + return mRetrofit.create(AppSettingApi.class) + .getAppSetting(Utils.getSerial(mContext)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()); + } + /* * @@ -2199,7 +2209,7 @@ public class NetInterfaceManager { if (ConnectManager.getInstance().isNeedConnect(UrlAddress.GET_STUDENTS_INFO, connectMode)) { getInfo(lifecycle, studesInfoListener); } else { - String jsonString = cacheHelper.getAsString(UrlAddress.GET_STUDENTS_INFO); + String jsonString = mMMKV.decodeString(UrlAddress.GET_STUDENTS_INFO); //为 "" 是已经请求成功的 if (jsonString == null) { getInfo(lifecycle, studesInfoListener); @@ -2207,8 +2217,13 @@ public class NetInterfaceManager { Gson gson = new Gson(); Type Type = new TypeToken() { }.getType(); - StudentsInfo studentsInfo = gson.fromJson(jsonString, Type); - studesInfoListener.setStudentsInfo(studentsInfo); + try { + StudentsInfo studentsInfo = gson.fromJson(jsonString, Type); + studesInfoListener.setStudentsInfo(studentsInfo); + } catch (Exception e) { + Log.e(TAG, "getStudesInfo: " + e.getMessage()); + studesInfoListener.setStudentsInfo(null); + } studesInfoListener.onComplete(); } } @@ -2234,9 +2249,9 @@ public class NetInterfaceManager { Log.e("getStudesInfo", "onNext: " + studentsInfoBaseResponse.data); if (studentsInfoBaseResponse.code == OK) { studesInfoListener.setStudentsInfo(studentsInfoBaseResponse.data); - cacheHelper.put(UrlAddress.GET_STUDENTS_INFO, GsonUtils.toJSONString(studentsInfoBaseResponse.data)); + mMMKV.encode(UrlAddress.GET_STUDENTS_INFO, GsonUtils.toJSONString(studentsInfoBaseResponse.data)); } else { - cacheHelper.put(UrlAddress.GET_STUDENTS_INFO, ""); + mMMKV.encode(UrlAddress.GET_STUDENTS_INFO, ""); Log.e("getStudesInfo", "onNext: " + studentsInfoBaseResponse.toString()); } } @@ -2519,9 +2534,11 @@ public class NetInterfaceManager { JGYUtils.getInstance().getAppPlatform(platform -> { if (platform == JGYUtils.MTKPlatform) { tagSets.add(JGYUtils.MTKTag); - } else if (platform == JGYUtils.CubePlatform) { - tagSets.add(JGYUtils.ZhanruiTag); - } else if (platform == JGYUtils.ZhanruiPlatform) { + } +// else if (platform == JGYUtils.CubePlatform) { +// tagSets.add(JGYUtils.ZhanruiTag); +// } + else if (platform == JGYUtils.ZhanruiPlatform) { tagSets.add(JGYUtils.ZhanruiTag); } else if (platform == JGYUtils.MTK11Platform) { tagSets.add(JGYUtils.MTK11Tag); @@ -2669,32 +2686,21 @@ public class NetInterfaceManager { callback.onComplete(); } }); + uploadAppIcon(); + } + private void uploadAppIcon() { PackageManager pm = mContext.getPackageManager(); List packageInfos = pm.getInstalledPackages(0); - List filter = packageInfos.stream().filter(new Predicate() { - @Override - public boolean test(PackageInfo packageInfo) { - if (ApkUtils.isSystemApp(mContext, packageInfo.packageName)) { - if (ApkUtils.systemApps.contains(packageInfo.packageName)) { - return true; - } else { - return false; - } - } else { - return true; - } - } - }).collect(Collectors.toList()); - List filterJxwApp = filter.stream().filter(packageInfo -> !ApkUtils.mJxwApp.contains(packageInfo.packageName)).collect(Collectors.toList()); - for (PackageInfo packageInfo : filterJxwApp) { - if ("com.uiuipad.find".equals(packageInfo.packageName) - || "com.uiuipad.os".equals(packageInfo.packageName) - || "com.uiui.zybrowser".equals(packageInfo.packageName) - ) { - continue; - } - + Log.e(TAG, "uploadAppIcon: packageInfos = " + packageInfos); + Intent intent = new Intent(Intent.ACTION_MAIN, null); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + List appsWithLauncher = pm.queryIntentActivities(intent, 0); + List allLauncherPkgs = appsWithLauncher.stream().map(resolveInfo -> resolveInfo.activityInfo.packageName).collect(Collectors.toList()); + Log.e(TAG, "uploadAppIcon: allLauncherPkgs = " + allLauncherPkgs); + List filter = packageInfos.stream().filter(packageInfo -> allLauncherPkgs.contains(packageInfo.packageName)).collect(Collectors.toList()); + Log.e(TAG, "sendInstalledAppInfo: " + filter); + for (PackageInfo packageInfo : filter) { if (!mUploadIconPkgs.contains(packageInfo.packageName)) { Drawable drawable = packageInfo.applicationInfo.loadIcon(pm); File file = BitmapUtils.drawableToFile(mContext, drawable, packageInfo.packageName); @@ -2735,6 +2741,7 @@ public class NetInterfaceManager { public void addIcon(String pkg) { mUploadIconPkgs.add(pkg); mMMKV.encode(uploadIconPkgsKey, mUploadIconPkgs); + Log.e("addIcon", "addIcon: " + mMMKV.decodeString(uploadIconPkgsKey)); } public void uploadLogFile() { diff --git a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java index 02dbce2..21a6e11 100644 --- a/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java +++ b/app/src/main/java/com/aoleyun/sn/network/UrlAddress.java @@ -104,6 +104,8 @@ public class UrlAddress { public static final String GET_WIFI_ALIAS_PW = "And/SnControl/getWifi"; /*获取远程关机时间*/ public static final String GET_POWEROFF_TIME = "And/getTimedShutdown"; + /*获取管控APP设置*/ + public static final String APP_SETTING = "android/sn-control/app-setting"; /** * 浏览器策略 diff --git a/app/src/main/java/com/aoleyun/sn/network/api/get/AppSettingApi.java b/app/src/main/java/com/aoleyun/sn/network/api/get/AppSettingApi.java new file mode 100644 index 0000000..d1d74b2 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/network/api/get/AppSettingApi.java @@ -0,0 +1,16 @@ +package com.aoleyun.sn.network.api.get; + +import com.aoleyun.sn.bean.AppSettings; +import com.aoleyun.sn.bean.BaseResponse; +import com.aoleyun.sn.network.UrlAddress; + +import io.reactivex.rxjava3.core.Observable; +import retrofit2.http.GET; +import retrofit2.http.Query; + +public interface AppSettingApi { + @GET(UrlAddress.APP_SETTING) + Observable> getAppSetting( + @Query("sn") String sn + ); +} diff --git a/app/src/main/java/com/aoleyun/sn/push/PushManager.java b/app/src/main/java/com/aoleyun/sn/push/PushManager.java index e10a1a3..7ad102d 100644 --- a/app/src/main/java/com/aoleyun/sn/push/PushManager.java +++ b/app/src/main/java/com/aoleyun/sn/push/PushManager.java @@ -1,6 +1,7 @@ package com.aoleyun.sn.push; import android.annotation.SuppressLint; +import android.content.ComponentName; import android.content.ContentResolver; import android.content.Context; import android.content.ContextWrapper; @@ -258,7 +259,7 @@ public class PushManager { Toaster.debugShow("收到管控:系统设置"); if (!TextUtils.isEmpty(extras)) { JGYUtils.getInstance().SettingSysData(extras); - JGYUtils.getInstance().removeAllTask(); +// JGYUtils.getInstance().removeAllTask(); } break; case MSG_BROWSER: @@ -777,6 +778,7 @@ public class PushManager { Utils.ariaDownload(mContext, app_url, packageObj); } else { Log.e(TAG, "doDownloadAndInstall: " + app_package + "已安装最新版"); + } } } @@ -1088,22 +1090,30 @@ public class PushManager { private void setDefalutApp(String extras) { if (TextUtils.isEmpty(extras)) { JGYUtils.getInstance().setDefaultDesktop(""); + JGYUtils.getInstance().openLauncher3(); } else { JsonObject jsonObject = GsonUtils.getJsonObject(extras); JsonElement launcherElement = jsonObject.get("default_launcher"); if (launcherElement.isJsonNull()) { JGYUtils.getInstance().setDefaultDesktop(""); mMMKV.encode(CommonConfig.DEFAULT_LAUNCHER_PACKAGE_NAME, ""); + JGYUtils.getInstance().openLauncher3(); // SPUtils.put(mContext, "default_launcher", ""); } else { String default_launcher = launcherElement.getAsString(); if (TextUtils.isEmpty(default_launcher)) { JGYUtils.getInstance().setDefaultDesktop(""); mMMKV.encode(CommonConfig.DEFAULT_LAUNCHER_PACKAGE_NAME, ""); - + JGYUtils.getInstance().openLauncher3(); // SPUtils.put(mContext, "default_launcher", ""); } else { JGYUtils.getInstance().setDefaultDesktop(default_launcher); + ComponentName cn = new ComponentName(default_launcher, JGYUtils.getInstance().getStartClassName(default_launcher)); + Intent intent = new Intent(); + intent.setComponent(cn); + intent.addCategory(Intent.CATEGORY_LAUNCHER); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + mContext.startActivity(intent); mMMKV.encode(CommonConfig.DEFAULT_LAUNCHER_PACKAGE_NAME, default_launcher); // SPUtils.put(mContext, "default_launcher", default_launcher); } diff --git a/app/src/main/java/com/aoleyun/sn/service/GuardService.java b/app/src/main/java/com/aoleyun/sn/service/GuardService.java index 82411b0..8efcde5 100644 --- a/app/src/main/java/com/aoleyun/sn/service/GuardService.java +++ b/app/src/main/java/com/aoleyun/sn/service/GuardService.java @@ -885,11 +885,7 @@ public class GuardService extends Service { } } else if (filepath.endsWith(".zip")) { Log.e("taskComplete", "下载完成:" + task.getPercent() + ":" + task.getExtendField()); - if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MT8768Platform){ - JGYUtils.getInstance().setBootanimationG10J(task.getFilePath()); - }else { - JGYUtils.getInstance().setBootanimation(task.getFilePath()); - } + JGYUtils.getInstance().setBootanimationG10J(task.getFilePath()); } } diff --git a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java index d8f19f0..861cf45 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/ApkUtils.java @@ -86,6 +86,7 @@ public class ApkUtils { this.add("com.uisaas.service"); this.add("com.ttstd.ttutils"); this.add("com.ttstd.qin"); + this.add("com.uiuios.ailog"); }}; /** @@ -411,6 +412,7 @@ public class ApkUtils { this.add("com.ygyb.yischool"); this.add("com.gaomuxuexi34"); + this.add("com.books.wisdom"); }}; @@ -472,7 +474,7 @@ public class ApkUtils { this.add("com.jxw.souti"); this.add("com.jxw.xdfzq"); - this.add("com.uiui.zysn "); + this.add("com.uiui.zysn"); }}; /** diff --git a/app/src/main/java/com/aoleyun/sn/utils/GlideLoadUtils.java b/app/src/main/java/com/aoleyun/sn/utils/GlideLoadUtils.java new file mode 100644 index 0000000..9a48946 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/utils/GlideLoadUtils.java @@ -0,0 +1,129 @@ +package com.aoleyun.sn.utils; + +import android.annotation.TargetApi; +import android.app.Activity; +import android.content.Context; +import android.graphics.drawable.Drawable; +import android.os.Build; +import android.util.Log; +import android.widget.ImageView; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; + +import com.bumptech.glide.Glide; +import com.bumptech.glide.request.target.SimpleTarget; +import com.bumptech.glide.request.transition.Transition; + +/** + * Glide 加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常 + * Created by Li_Xavier on 2017/6/20 0020. + */ +public class GlideLoadUtils { + private String TAG = "ImageLoader"; + + /** + * 借助内部类 实现线程安全的单例模式 + * 属于懒汉式单例,因为Java机制规定,内部类SingletonHolder只有在getInstance() + * 方法第一次调用的时候才会被加载(实现了lazy),而且其加载过程是线程安全的。 + * 内部类加载的时候实例化一次instance。 + */ + public GlideLoadUtils() { + } + + private static class GlideLoadUtilsHolder { + private final static GlideLoadUtils INSTANCE = new GlideLoadUtils(); + } + + public static GlideLoadUtils getInstance() { + return GlideLoadUtilsHolder.INSTANCE; + } + + /** + * Glide 加载 简单判空封装 防止异步加载数据时调用Glide 抛出异常 + * + * @param context + * @param url 加载图片的url地址 String + * @param imageView 加载图片的ImageView 控件 + * @param default_image 图片展示错误的本地图片 id + */ + public void glideLoad(Context context, String url, ImageView imageView, int default_image) { + if (context != null) { + Glide.with(context).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,context is null"); + } + } + + public void glideLoadc(Context context, String url, ImageView imageView, Drawable default_image) { + if (context != null) { + Glide.with(context).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,context is null"); + } + } + + public void glideLoad(Activity activity, String url, ImageView imageView, Drawable drawable) { + if (activity != null && !activity.isDestroyed()) { + Glide.with(activity.getApplicationContext()).load(url).error(drawable).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,context is null"); + } + } + + public void glideLoad(Context context, String url, ImageView imageView) { + if (context != null) { + Glide.with(context).load(url).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,context is null"); + } + } + + public void glideLoad(Context context, Drawable drawable, ImageView imageView) { + if (context != null) { + Glide.with(context).load(drawable).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,context is null"); + } + } + + public void glideLoad(Context context, int drawableId, ImageView imageView) { + if (context != null) { + Glide.with(context).load(context.getDrawable(drawableId)).centerCrop().into(imageView); + } else { + Log.i(TAG, "Picture loading failed,context is null"); + } + } + + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) + public void glideLoad(Activity activity, String url, ImageView imageView, int default_image) { + if (!activity.isDestroyed()) { +// Glide.with(activity).load(url).centerCrop().dontAnimate().error(default_image).into(imageView); + Glide.with(activity).load(url).into(new SimpleTarget() { + @Override + public void onResourceReady(@NonNull Drawable resource, @Nullable Transition transition) { + imageView.setImageDrawable(resource); + } + }); + } else { + Log.i(TAG, "Picture loading failed,activity is Destroyed"); + } + } + + public void glideLoad(Fragment fragment, String url, ImageView imageView, int default_image) { + if (fragment != null && fragment.getActivity() != null) { + Glide.with(fragment).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,fragment is null"); + } + } + + public void glideLoad(android.app.Fragment fragment, String url, ImageView imageView, int default_image) { + if (fragment != null && fragment.getActivity() != null) { + Glide.with(fragment).load(url).centerCrop().error(default_image).into(imageView); + } else { + Log.i(TAG, "Picture loading failed,android.app.Fragment is null"); + } + } +} diff --git a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java index 5eb0a14..5494994 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/JGYUtils.java @@ -135,9 +135,10 @@ public class JGYUtils { private TimeUtils.ContralTime mContralTime; public static final int UnknowPlatform = 0; + public static final int MTKPlatform = 1; - public static final int CubePlatform = 2; - public static final int ZhanruiPlatform = 3; + public static final int ZhanruiPlatform = 2; +// public static final int CubePlatform = 3; public static final int MTK11Platform = 5; public static final int TeclastP20sPlatform = 6; public static final int AH6016Platform = 9; @@ -151,9 +152,10 @@ public class JGYUtils { public static final String Other = "其他"; + public static final String MTKTag = "MTK"; - public static final String CubeTag = "展锐cube"; public static final String ZhanruiTag = "展锐"; +// public static final String CubeTag = "展锐cube"; public static final String MTK11Tag = "MTK11"; public static final String TeclastP20sTag = "P20S"; public static final String AH6016Tag = "AH6016"; @@ -250,16 +252,18 @@ public class JGYUtils { public int checkAppPlatform() { String platform = BuildConfig.platform; - if ("MTK".equalsIgnoreCase(platform)) { + if (MTKTag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "MTK平台"); return MTKPlatform; - } else if ("ZhanRui".equalsIgnoreCase(platform)) { + } else if (ZhanruiTag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "展锐平台"); return ZhanruiPlatform; - } else if ("ZhanRuiCube".equalsIgnoreCase(platform)) { - Log.i(TAG, "checkAppPlatform: " + "ZhanRuiCube"); - return CubePlatform; - } else if (MTK11Tag.equalsIgnoreCase(platform)) { + } +// else if (CubeTag.equalsIgnoreCase(platform)) { +// Log.i(TAG, "checkAppPlatform: " + "ZhanRuiCube"); +// return CubePlatform; +// } + else if (MTK11Tag.equalsIgnoreCase(platform)) { Log.i(TAG, "checkAppPlatform: " + "MTK11"); return MTK11Platform; } else if (TeclastP20sTag.equalsIgnoreCase(platform)) { @@ -298,7 +302,7 @@ public class JGYUtils { public boolean isSamePlatform(String platform) { String AppPlatform = BuildConfig.platform; - if ("ZhanRui".equals(AppPlatform)) { + if (ZhanruiTag.equals(AppPlatform)) { return ZhanruiTag.equals(platform); } else { return AppPlatform.equals(platform); @@ -311,13 +315,15 @@ public class JGYUtils { public void getAppPlatform(GetAppPlatformCallback getAppPlatformCallback) { String platform = BuildConfig.platform; - if ("MTK".equalsIgnoreCase(platform)) { + if (MTKTag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(MTKPlatform); - } else if ("ZhanRui".equalsIgnoreCase(platform)) { + } else if (ZhanruiTag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(ZhanruiPlatform); - } else if ("ZhanRuiCube".equalsIgnoreCase(platform)) { - getAppPlatformCallback.AppPlatform(CubePlatform); - } else if ("MTK11".equalsIgnoreCase(platform)) { + } +// else if ("ZhanRuiCube".equalsIgnoreCase(platform)) { +// getAppPlatformCallback.AppPlatform(CubePlatform); +// } + else if (MTK11Tag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(MTK11Platform); } else if (TeclastP20sTag.equalsIgnoreCase(platform)) { getAppPlatformCallback.AppPlatform(TeclastP20sPlatform); @@ -344,13 +350,15 @@ public class JGYUtils { public String getAppPlatform() { String platform = BuildConfig.platform; - if ("MTK".equalsIgnoreCase(platform)) { + if (MTKTag.equalsIgnoreCase(platform)) { return MTKTag; - } else if ("ZhanRui".equalsIgnoreCase(platform)) { + } else if (ZhanruiTag.equalsIgnoreCase(platform)) { return ZhanruiTag; - } else if (CubeTag.equalsIgnoreCase(platform)) { - return CubeTag; - } else if (MTK11Tag.equalsIgnoreCase(platform)) { + } +// else if (CubeTag.equalsIgnoreCase(platform)) { +// return CubeTag; +// } + else if (MTK11Tag.equalsIgnoreCase(platform)) { return MTK11Tag; } else if (TeclastP20sTag.equalsIgnoreCase(platform)) { return TeclastP20sTag; @@ -747,6 +755,7 @@ public class JGYUtils { public void setAllowPermissionsPackage(Context context) { Set privilegeApp = mMMKV.decodeStringSet("aole_app_privilege", new HashSet<>()); + Log.e(TAG, "setAllowPermissionsPackage: " + privilegeApp); Set pkgSet = privilegeApp.stream().filter(s -> ApkUtils.isAvailable(mContext, s)).collect(Collectors.toSet()); Log.e(TAG, "setAllowPermissionsPackage: " + pkgSet); if (pkgSet.size() == 0) { @@ -1741,11 +1750,7 @@ public class JGYUtils { String oldMd5 = FileUtils.getFileMD5ToString(bootFile); if (!TextUtils.isEmpty(oldMd5) && oldMd5.equalsIgnoreCase(MD5)) { Log.e(TAG, "checkBootFile: Bootanimation file exists"); - if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MT8768Platform) { - JGYUtils.getInstance().setBootanimationG10J(bootFile.getAbsolutePath()); - } else { - JGYUtils.getInstance().setBootanimation(bootFile.getAbsolutePath()); - } + setBootanimationG10J(bootFile.getAbsolutePath()); } else { JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("MD5", MD5); @@ -1762,7 +1767,7 @@ public class JGYUtils { private static final String BOOTANIMATION_PATH = "/data/local/qchmedia/bootanimation.zip"; - @SuppressLint("NewApi") + @Deprecated public void setBootanimation(String filePath) { File systemFile = new File(BOOTANIMATION_PATH); if (!systemFile.exists()) { @@ -1897,39 +1902,18 @@ public class JGYUtils { int oldStatu = Settings.System.getInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, 1); if (oldStatu == newStatu) { Log.e(TAG, "setDeveloperOptions: oldStatu = " + oldStatu + " no changed"); - return; } Log.e(TAG, "getDeveloper: state = " + state); - Log.e(TAG, "setDeveloperOptions: " + JGYUtils.getInstance().checkAppPlatform()); - if (!BuildConfig.DEBUG) { - //这个需要反着来 - Settings.System.putInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, newStatu); - if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.CubePlatform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.AH6016Platform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZR6016Platform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.HRAD13Platform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G10PPlatform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.C2Platform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.YXPD1Platform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.G11Platform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MT8768Platform - ) { - Settings.Global.putInt(crv, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, state); - Settings.Global.putInt(crv, Settings.Global.ADB_ENABLED, state); - } - - /*已废弃 为1关闭,为0打开*/ - if (newStatu == 1) { - Intent intent = new Intent(); - intent.setAction("qch_developeroptions_close"); - intent.setPackage("com.android.settings"); - mContext.sendBroadcast(intent); - Log.e(TAG, "getDeveloper: " + "关闭开发者模式"); - } else { - Log.e(TAG, "getDeveloper: " + "打开开发者模式"); - } + //这个需要反着来 + Settings.System.putInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, newStatu); + Log.e(TAG, "setDeveloperOptions: DEVELOPMENT_SETTINGS_ENABLED = " + Settings.Global.getInt(crv, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0)); + Log.e(TAG, "setDeveloperOptions: ADB_ENABLED = " + Settings.Global.getInt(crv, Settings.Global.ADB_ENABLED, 0)); + if (Settings.Global.getInt(crv, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0) != state) { + Settings.Global.putInt(crv, Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, state); + } + if (Settings.Global.getInt(crv, Settings.Global.ADB_ENABLED, 0) != state) { + Settings.Global.putInt(crv, Settings.Global.ADB_ENABLED, state); } } @@ -2039,18 +2023,21 @@ public class JGYUtils { intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); /*知道要跳转应用的包命与目标Activity*/ switch (JGYUtils.getInstance().checkAppPlatform()) { + default: + case JGYUtils.YXPD1Platform: + intent.setComponent(new ComponentName("com.adups.fota", "com.adups.fota.GoogleOtaClient")); + break; case JGYUtils.C2Platform: intent.setComponent(new ComponentName("com.jintaiyi.update", "com.jintaiyi.update.activity.NoVersionActivity")); break; - case JGYUtils.YXPD1Platform: - default: - intent.setComponent(new ComponentName("com.adups.fota", "com.adups.fota.GoogleOtaClient")); + case JGYUtils.ZhanruiPlatform: + intent.setComponent(new ComponentName("com.cube.update", "com.cube.update.GoogleOtaClient")); break; } try { mContext.startActivity(intent); } catch (Exception e) { - Log.e(TAG, "openOTA: " + e.getMessage()); + Log.e(TAG, "openRomOta: " + e.getMessage()); Toaster.show("打开失败"); } } @@ -2440,12 +2427,12 @@ public class JGYUtils { public void setDefaultDesktop(String pkg) { Log.e(TAG, "setDefaultDesktop: " + pkg); if (TextUtils.isEmpty(pkg)) { - openLauncher3(); + setLauncher3(); } else { String className = getStartClassName(pkg); Log.e(TAG, "setDefaultDesktop: " + className); if (TextUtils.isEmpty(className)) { - openLauncher3(); + setLauncher3(); } else { setDefaultDesktop(pkg, className); } @@ -2462,15 +2449,25 @@ public class JGYUtils { } } - private void openLauncher3() { -// ApkUtils.openPackage(mContext, Launcher3); - if ("C2".equals(Build.MODEL)) { + private void setLauncher3() { + if (ApkUtils.isAvailable(mContext, AoleyunOs) + || "C2".equals(Build.MODEL)) { setDefaultDesktop(AoleyunOs, AoleyunOsClass); } else { setDefaultDesktop(Launcher3, Launcher3Class); } } + public void openLauncher3() { + if (ApkUtils.isAvailable(mContext, AoleyunOs) + || "C2".equals(Build.MODEL)) { + ApkUtils.openPackage(mContext, AoleyunOs, AoleyunOsClass); + } else { + ApkUtils.openPackage(mContext, Launcher3, Launcher3Class); + } + } + + public String getStartClassName(String pkg) { PackageInfo packageInfo = null; try { diff --git a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java index f7cd94b..9c2396d 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/SysSettingUtils.java @@ -12,6 +12,7 @@ import android.text.TextUtils; import android.util.Log; import com.aoleyun.sn.BuildConfig; +import com.aoleyun.sn.activity.main.MainActivity; import com.aoleyun.sn.bean.SnSetting; import com.aoleyun.sn.comm.CommonConfig; import com.aoleyun.sn.comm.JGYActions; @@ -67,6 +68,7 @@ public class SysSettingUtils { setAdminApp(context, jsonObject); setSystemAppDisable(context, jsonObject); setNotification(context, jsonObject); + setPanelShow(context, jsonObject); } /** @@ -960,7 +962,7 @@ public class SysSettingUtils { Settings.Global.putInt(context.getContentResolver(), CommonConfig.AOLE_APP_ALLOW_INSTALL, 1); setUsb(context, 0); setBluetoothTransmission(context, 0); - JGYUtils.getInstance().setDeveloperOptions(0); +// JGYUtils.getInstance().setDeveloperOptions(0); setCanReset(context, 0); setActionBar(context, 0); setNavigationBar(context, 0); @@ -1090,4 +1092,22 @@ public class SysSettingUtils { } context.sendBroadcast(intent); } + + private static void setPanelShow(Context context, JsonObject jsonObject) { + JsonElement jsonElement = jsonObject.get("is_control_show"); + if (jsonElement != null && !jsonElement.isJsonNull()) { + int is_control_show = jsonElement.getAsInt(); + Intent intent = new Intent(); + switch (is_control_show) { + case 1: + intent.setAction(MainActivity.PANEL_SHOW); + break; + case 0: + default: + intent.setAction(MainActivity.PANEL_HIDE); + break; + } + context.sendBroadcast(intent); + } + } } diff --git a/app/src/main/java/com/aoleyun/sn/utils/Utils.java b/app/src/main/java/com/aoleyun/sn/utils/Utils.java index 47bf134..02d177b 100644 --- a/app/src/main/java/com/aoleyun/sn/utils/Utils.java +++ b/app/src/main/java/com/aoleyun/sn/utils/Utils.java @@ -737,7 +737,7 @@ public class Utils { } //获取App版本号 - public static synchronized String getAPPVersionName(String pck, Context context) { + public static String getAPPVersionName(String pck, Context context) { PackageManager pm = context.getPackageManager(); String versionName; try { @@ -1071,7 +1071,7 @@ public class Utils { * * @param context */ - synchronized public static void doMasterClear(Context context) { + public static void doMasterClear(Context context) { if (BuildConfig.DEBUG) { Toaster.show("收到重置设备推送消息"); return; @@ -1104,7 +1104,7 @@ public class Utils { * @param disallowList 允许 * @return */ - static synchronized public boolean writeDisableUpdateList(Context context, String[] allowList, String[] disallowList) { + static public boolean writeDisableUpdateList(Context context, String[] allowList, String[] disallowList) { String now = Settings.System.getString(context.getContentResolver(), CommonConfig.AOLE_ACTION_APP_FORBID); String[] nowList; List allList; @@ -1568,7 +1568,7 @@ public class Utils { * @param mContext * @return */ - synchronized private static int getBatteryLevel(Context mContext) { + private static int getBatteryLevel(Context mContext) { if (Build.VERSION.SDK_INT >= 21) { return ((BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE)).getIntProperty(4); } else { @@ -1764,7 +1764,7 @@ public class Utils { */ public static String getCustomVersion() { if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform - || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.CubePlatform +// || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.CubePlatform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MTKPlatform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MTK11Platform || JGYUtils.getInstance().checkAppPlatform() == JGYUtils.TeclastP20sPlatform @@ -1791,9 +1791,11 @@ public class Utils { public static String getRomVersion() { if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.ZhanruiPlatform) { return getProperty("ro.build.id", "获取失败"); - } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.CubePlatform) { - return Utils.getProperty("ro.build.id", "获取失败"); - } else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MTKPlatform) { + } +// else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.CubePlatform) { +// return Utils.getProperty("ro.build.id", "获取失败"); +// } + else if (JGYUtils.getInstance().checkAppPlatform() == JGYUtils.MTKPlatform) { return Utils.getProperty("ro.build.id", "获取失败"); } else { return getProperty("ro.build.display.id", "获取失败"); diff --git a/app/src/main/java/com/aoleyun/sn/view/DataBindingAdapter.java b/app/src/main/java/com/aoleyun/sn/view/DataBindingAdapter.java new file mode 100644 index 0000000..8c3c766 --- /dev/null +++ b/app/src/main/java/com/aoleyun/sn/view/DataBindingAdapter.java @@ -0,0 +1,54 @@ +package com.aoleyun.sn.view; + +import android.graphics.Bitmap; +import android.graphics.drawable.Drawable; +import android.text.TextUtils; +import android.view.View; +import android.widget.ImageView; + +import androidx.databinding.BindingAdapter; + +import com.aoleyun.sn.R; +import com.aoleyun.sn.utils.GlideLoadUtils; +import com.bumptech.glide.Glide; + +public class DataBindingAdapter { + @BindingAdapter("android:src") + public static void setSrc(ImageView view, Bitmap bitmap) { + view.setImageBitmap(bitmap); + } + + @BindingAdapter("android:src") + public static void setSrc(ImageView view, int resId) { + view.setImageResource(resId); + } + + @BindingAdapter("imageUrl") + public static void setSrc(ImageView imageView, String url) { + Glide.with(imageView.getContext()) + .load(url) + .error(R.mipmap.ic_launcher) + .centerCrop() + .into(imageView); + } + + /** + * 自定义设置图片属性 - 在匹配时自定义命名空间会被忽略 + */ + @BindingAdapter({"imageUrl", "error"}) + public static void loadImage(ImageView imageView, String url, Drawable error) { + GlideLoadUtils.getInstance().glideLoadc(imageView.getContext(), url, imageView, error); + } + + @BindingAdapter({"loadUrl"}) + public static void loadUrl(ImageView imageView, String url) { + if (TextUtils.isEmpty(url)) { + imageView.setVisibility(View.GONE); + } else { + imageView.setVisibility(View.VISIBLE); + Glide.with(imageView.getContext()) + .load(url) + .into(imageView); + } + } +} \ No newline at end of file diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index d9da97b..05524ad 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -142,13 +142,13 @@ android:id="@+id/tv_activation_time" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="激活时间" android:textColor="@color/text_gray" android:textSize="@dimen/sp_9" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tv_name" /> + app:layout_constraintTop_toBottomOf="@+id/tv_name" + tools:text="激活时间" /> @@ -203,12 +203,14 @@ android:layout_marginStart="@dimen/dp_8" android:layout_marginEnd="@dimen/dp_8" android:background="@color/text_gray" + android:visibility="gone" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> @@ -247,12 +249,13 @@ android:layout_marginStart="@dimen/dp_8" android:layout_marginEnd="@dimen/dp_8" android:background="@color/text_gray" - app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> @@ -285,6 +288,15 @@ app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> + @@ -301,6 +313,7 @@ android:layout_marginStart="@dimen/dp_8" android:layout_marginTop="@dimen/dp_8" android:layout_marginEnd="@dimen/dp_8" + android:layout_marginBottom="@dimen/dp_8" android:layout_weight="4" android:background="@drawable/card_background"> @@ -561,11 +574,15 @@ + android:background="@drawable/card_background" + android:visibility="gone"> + + + + + + + + @@ -142,13 +155,13 @@ android:id="@+id/tv_activation_time" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:text="激活时间" android:textColor="@color/text_gray" android:textSize="@dimen/sp_9" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tv_name" /> + app:layout_constraintTop_toBottomOf="@+id/tv_name" + tools:text="激活时间" /> @@ -167,20 +180,22 @@ + android:layout_weight="1" + android:visibility="@{appSettings==null||appSettings.custom_batch_control==0?View.GONE:View.VISIBLE}"> + app:layout_goneMarginStart="@dimen/dp_16" + tools:text="设备批次" /> + app:layout_constraintTop_toTopOf="parent" + tools:text="@string/unknown" /> + android:layout_weight="1" + android:visibility="@{appSettings==null||appSettings.custom_number_control==0?View.GONE:View.VISIBLE}"> + app:layout_goneMarginStart="@dimen/dp_16" + tools:text="设备学号" /> + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:layout_weight="1" + android:visibility="@{appSettings==null||appSettings.custom_class_control==0?View.GONE:View.VISIBLE}"> + app:layout_goneMarginStart="@dimen/dp_16" + tools:text="设备班级" /> + @@ -301,6 +333,7 @@ android:layout_marginStart="@dimen/dp_8" android:layout_marginTop="@dimen/dp_8" android:layout_marginEnd="@dimen/dp_8" + android:layout_marginBottom="@dimen/dp_8" android:layout_weight="4" android:background="@drawable/card_background"> @@ -561,11 +594,15 @@ + android:background="@drawable/card_background" + android:visibility="gone"> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index e21d734..a3c5cbe 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -40,7 +40,7 @@ 设备型号 扫码注册小程序 未设置 - unknown + wifi已断开 系统关闭wifi 系统开启wifi