diff --git a/app/build.gradle b/app/build.gradle
index 1c6f019..1fee744 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -29,8 +29,8 @@ android {
defaultConfig {
applicationId "com.aoleyun.sn"
- versionCode 192
- versionName "1.5.0821"
+ versionCode 197
+ versionName "1.5.1018"
//There are no CERT files because If the mini sdk version is 23+, the AGP will ignore the V1 scheme signature.
minSdkVersion 24
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 503c162..6af249d 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -81,7 +81,7 @@
-
+
@@ -222,9 +222,18 @@
+
+
+
{
+
+ private AppUpdateInfo mAppInfoData;
+
+
+ @Override
+ protected int getLayoutId() {
+ return R.layout.activity_app_update;
+ }
+
+ @Override
+ protected void initDataBinding() {
+ mViewModel.setCtx(this);
+ mViewModel.setLifecycle(getLifecycleSubject());
+ mViewModel.setVDBinding(mViewDataBinding);
+ mViewDataBinding.setClick(new BtnClick());
+ }
+
+ @Override
+ protected void initView() {
+
+ }
+
+ @Override
+ protected void initData() {
+ Intent intent = getIntent();
+ mAppInfoData = (AppUpdateInfo) intent.getSerializableExtra("appUpdateInfo");
+ if (mAppInfoData != null) {
+ mViewDataBinding.setAppInfo(mAppInfoData);
+ mViewDataBinding.setMsg("检测到新版本,是否更新");
+ String pkg = mAppInfoData.getPackages();
+ switch (pkg) {
+ case "com.aoleyun.os":
+ mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_os));
+ break;
+ case "com.aoleyun.appstore":
+ mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_appstore));
+ break;
+ case "com.aoleyun.browser":
+ mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_browser));
+ break;
+ case "com.aoleyun.ailog":
+ mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.drawable.com_aoleyun_ailog));
+ break;
+ default:
+ case BuildConfig.APPLICATION_ID:
+ mViewDataBinding.ivAppIcon.setImageDrawable(getDrawable(R.mipmap.ic_launcher));
+ break;
+ }
+ } else {
+ finish();
+ }
+ }
+
+
+ public class BtnClick {
+ public void empty(View view) {
+
+ }
+
+ public void exit(View view) {
+ finish();
+ }
+
+ public void upgrade(View view) {
+ startService(new Intent(AppUpdateActivity.this, MainService.class));
+
+ if (mAppInfoData != null) {
+ DownloadEntity entity = Aria.download(this).getFirstDownloadEntity(mAppInfoData.getUrl());
+ if (null != entity) {
+ if (entity.isComplete()) {
+ JsonObject jsonObject = GsonUtils.getJsonObject(new Gson().toJson(mAppInfoData));
+ Utils.ariaDownload(AppUpdateActivity.this, mAppInfoData.getUrl(), jsonObject);
+ } else {
+ if (entity.getState() == STATE_RUNNING) {
+ Toaster.show("文件正在下载中");
+ finish();
+ } else {
+ Aria.download(this).resumeAllTask();
+ Toaster.show("正在下载");
+ finish();
+ }
+ }
+ } else {
+ JsonObject jsonObject = GsonUtils.getJsonObject(new Gson().toJson(mAppInfoData));
+ Utils.ariaDownload(AppUpdateActivity.this, mAppInfoData.getUrl(), jsonObject);
+ Toaster.show("正在下载更新");
+ finish();
+ }
+ }
+
+ }
+ }
+}
diff --git a/app/src/main/java/com/aoleyun/sn/activity/update/AppUpdateViewModel.java b/app/src/main/java/com/aoleyun/sn/activity/update/AppUpdateViewModel.java
new file mode 100644
index 0000000..01adf5d
--- /dev/null
+++ b/app/src/main/java/com/aoleyun/sn/activity/update/AppUpdateViewModel.java
@@ -0,0 +1,18 @@
+package com.aoleyun.sn.activity.update;
+
+import com.trello.rxlifecycle4.android.ActivityEvent;
+import com.aoleyun.sn.base.mvvm.BaseViewModel;
+import com.aoleyun.sn.databinding.ActivityAppUpdateBinding;
+
+public class AppUpdateViewModel extends BaseViewModel {
+
+ @Override
+ public ActivityAppUpdateBinding getVDBinding() {
+ return binding;
+ }
+
+ @Override
+ public void onDestroy() {
+
+ }
+}
diff --git a/app/src/main/java/com/aoleyun/sn/bean/AppUpdateInfo.java b/app/src/main/java/com/aoleyun/sn/bean/AppUpdateInfo.java
index 4bfbd7e..2e05910 100644
--- a/app/src/main/java/com/aoleyun/sn/bean/AppUpdateInfo.java
+++ b/app/src/main/java/com/aoleyun/sn/bean/AppUpdateInfo.java
@@ -17,6 +17,7 @@ public class AppUpdateInfo implements Serializable {
@SerializedName("package")
String packages;
String app_md5;
+ int is_forcedown;
public int getId() {
return id;
@@ -74,6 +75,14 @@ public class AppUpdateInfo implements Serializable {
this.app_md5 = app_md5;
}
+ public int getIs_forcedown() {
+ return is_forcedown;
+ }
+
+ public void setIs_forcedown(int is_forcedown) {
+ this.is_forcedown = is_forcedown;
+ }
+
@Override
public String toString() {
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();
diff --git a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java
index e02f6c7..fe9029d 100644
--- a/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java
+++ b/app/src/main/java/com/aoleyun/sn/comm/CommonConfig.java
@@ -8,6 +8,10 @@ public class CommonConfig {
public static final String DEFAULT_DESKTOP_PACKAGE = "default_desktop_package_key";
+ /**
+ * 设备重启标志 重启后请求接口,Service重启不请求
+ */
+ public final static String DEVICES_REBOOT = "device_reboot_mark";
/*爱华解锁标识*/
public final static String AIHUA_UNLOCK = "Aihua_unlock_state";
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 aee2dbf..9cdc0fd 100644
--- a/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/aoleyun/sn/network/NetInterfaceManager.java
@@ -22,6 +22,7 @@ import com.alibaba.sdk.android.push.CloudPushService;
import com.alibaba.sdk.android.push.CommonCallback;
import com.alibaba.sdk.android.push.noonesdk.PushServiceFactory;
import com.aoleyun.sn.BuildConfig;
+import com.aoleyun.sn.activity.update.AppUpdateActivity;
import com.aoleyun.sn.base.BaseApplication;
import com.aoleyun.sn.bean.AdminAppInfo;
import com.aoleyun.sn.bean.AppAttr;
@@ -1004,10 +1005,11 @@ public class NetInterfaceManager {
Log.e("checkAoleyunUpdate", "onNext: " + jsonString);
if (appUpdateInfos != null && appUpdateInfos.size() != 0) {
cacheHelper.put(UrlAddress.CHECK_UPDATE, jsonString);
- for (AppUpdateInfo info : appUpdateInfos) {
- JsonObject jsonObject = parseString(new Gson().toJson(info)).getAsJsonObject();
- JgyUtils.getInstance().installAPK(jsonObject);
- }
+// for (AppUpdateInfo info : appUpdateInfos) {
+// JsonObject jsonObject = parseString(new Gson().toJson(info)).getAsJsonObject();
+// JgyUtils.getInstance().installAPK(jsonObject);
+// }
+ getAllAppUpdate(appUpdateInfos);
} else {
cacheHelper.put(UrlAddress.CHECK_UPDATE, "");
}
@@ -1027,6 +1029,59 @@ public class NetInterfaceManager {
});
}
+ /**
+ * @param appInfos 获取所有app直接更新
+ */
+ public void getAllAppUpdate(List appInfos) {
+ if (appInfos == null || appInfos.size() == 0) {
+ return;
+ }
+ HashMap appInfoHashMap = new HashMap<>();
+ for (AppUpdateInfo appInfo : appInfos) {
+ if (appInfo == null) continue;
+ appInfoHashMap.put(appInfo.getPackages(), appInfo);
+ }
+ PackageManager pm = mContext.getPackageManager();
+ for (Map.Entry entry : appInfoHashMap.entrySet()) {
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(entry.getKey(), 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (entry.getValue() != null) {
+ if (packageInfo == null) {
+ //未安装
+ String s = new Gson().toJson(entry.getValue());
+ Log.e(TAG, "getAllAppUpdate: " + s);
+ JsonObject jsonObject = GsonUtils.getJsonObject(s);
+ Utils.ariaDownload(mContext, entry.getValue().getUrl(), jsonObject);
+ } else {
+ long appVersionCode;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ appVersionCode = packageInfo.getLongVersionCode();
+ } else {
+ appVersionCode = packageInfo.versionCode;
+ }
+ long versionCode = entry.getValue().getVersion_code();
+ //版本升级
+ if (appVersionCode < versionCode) {
+ int is_forcedown = entry.getValue().getIs_forcedown();
+ if (is_forcedown == 1) {
+ JsonObject jsonObject = GsonUtils.getJsonObject(new Gson().toJson(entry.getValue()));
+ Utils.ariaDownload(mContext, entry.getValue().getUrl(), jsonObject);
+ } else {
+ Intent intent = new Intent(mContext, AppUpdateActivity.class);
+ intent.putExtra("appUpdateInfo", entry.getValue());
+ intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
+ }
+ }
+ }
+ }
+ }
+ }
+
public interface UpdateCallback {
void onUpdate(List appUpdateInfos);
}
@@ -2582,10 +2637,10 @@ public class NetInterfaceManager {
public void onNext(@NonNull BaseResponse response) {
if (response.code == OK) {
cacheHelper.put(UrlAddress.SEND_DEVICES, macJson);
- Log.e("sendMACAddress", response.msg);
+ Log.e("sendMACAddress", "onNext: " + response.msg);
SPUtils.put(mContext, "macJson", macJson);
} else {
- Log.e("sendMACAddress", response.toString());
+ Log.e("sendMACAddress", "onNext: " + response.toString());
}
}
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 245f26e..2a60e0b 100644
--- a/app/src/main/java/com/aoleyun/sn/push/PushManager.java
+++ b/app/src/main/java/com/aoleyun/sn/push/PushManager.java
@@ -24,6 +24,7 @@ import android.view.Gravity;
import android.view.WindowManager;
import com.aoleyun.sn.R;
+import com.aoleyun.sn.activity.AudioActivity;
import com.aoleyun.sn.activity.main.MainActivity;
import com.aoleyun.sn.bean.ApkInfoPush;
import com.aoleyun.sn.bean.BaseResponse;
@@ -1171,8 +1172,10 @@ public class PushManager {
}
private void playSound(String extras) {
- JsonObject jsonObject = GsonUtils.getJsonObject(extras);
- defaultCallMediaPlayer(mContext);
+// defaultCallMediaPlayer(mContext);
+ Intent intent = new Intent(mContext, AudioActivity.class);
+ intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+ mContext.startActivity(intent);
}
/**
diff --git a/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java b/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java
index abe9b71..8b60bf1 100644
--- a/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java
+++ b/app/src/main/java/com/aoleyun/sn/receiver/BootReceiver.java
@@ -24,6 +24,7 @@ import io.reactivex.rxjava3.disposables.Disposable;
public class BootReceiver extends BroadcastReceiver {
private static String TAG = "BootReceiver" + ":aoleyunsn";
public static final String BOOT_COMPLETED = "aoleyun.intent.action.BOOT_COMPLETED";
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
static {
getLockedState();
@@ -74,7 +75,8 @@ public class BootReceiver extends BroadcastReceiver {
default:
break;
case Intent.ACTION_BOOT_COMPLETED:
- MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE).encode(ConnectManager.REBOOT_LAST_ONNECT_TIME, System.currentTimeMillis());
+ mMMKV.encode(CommonConfig.DEVICES_REBOOT, true);
+ mMMKV.encode(ConnectManager.REBOOT_LAST_ONNECT_TIME, System.currentTimeMillis());
if ((int) SPUtils.get(context, CommonConfig.FIRST_STARTUP, 0) == 0) {
LogDBManager.getInstance().creatRebootLog("首次启动", TimeUtils.transferLongToDate(System.currentTimeMillis()));
SPUtils.put(context, CommonConfig.FIRST_STARTUP, 1);
diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java b/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java
index aecbf3c..627a5c0 100644
--- a/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java
+++ b/app/src/main/java/com/aoleyun/sn/service/main/MainSContact.java
@@ -22,7 +22,7 @@ public class MainSContact {
/*分支3 上传信息*/
/*上传联网时间*/
- void sendNetwork(List time);
+ void sendNetwork(List time);
/*发送mac地址*/
void sendMacAddress();
/*更新设备信息*/
diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java
index 16d2fe9..e720dc3 100644
--- a/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java
+++ b/app/src/main/java/com/aoleyun/sn/service/main/MainSPresenter.java
@@ -86,7 +86,7 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getLockedState() {
Log.e(TAG, "getLockedState: ");
- if (JgyUtils.getInstance().isAihuaFramwwork()) {
+ if (JgyUtils.getInstance().isAihuaFramework()) {
int aihuaUnlock = Settings.System.getInt(mContext.getContentResolver(), CommonConfig.AIHUA_UNLOCK, 0);
if (aihuaUnlock == 1) {
return;
@@ -235,14 +235,14 @@ public class MainSPresenter implements MainSContact.Presenter {
if (JgyUtils.isOfficialVersion()) {
mView.updateDeviceInfoFinish();
}
- if (!JgyUtils.getInstance().tagEmpty()) {
+// if (!JgyUtils.getInstance().tagEmpty()) {
NetInterfaceManager.getInstance().updateDeviceInfo(true, getLifecycle(), new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.updateDeviceInfoFinish();
}
});
- }
+// }
}
/**
@@ -250,14 +250,14 @@ public class MainSPresenter implements MainSContact.Presenter {
*/
@Override
public void sendInstalled() {
- if (!JgyUtils.getInstance().tagEmpty()) {
+// if (!JgyUtils.getInstance().tagEmpty()) {
NetInterfaceManager.getInstance().sendInstalledAppInfo(new NetInterfaceManager.onCompleteCallback() {
@Override
public void onComplete() {
mView.sendInstalledFinish();
}
});
- }
+// }
}
/**
@@ -375,7 +375,7 @@ public class MainSPresenter implements MainSContact.Presenter {
mView.getDefaultDesktopFinish();
} else {
int aihuaUnlock = Settings.System.getInt(mContext.getContentResolver(), CommonConfig.AIHUA_UNLOCK, 0);
- if (JgyUtils.getInstance().isAihuaFramwwork() && aihuaUnlock == 1) {
+ if (JgyUtils.getInstance().isAihuaFramework() && aihuaUnlock == 1) {
Log.e(TAG, "getDefaultDesktop: " + "Device aihua");
mView.getDefaultDesktopFinish();
} else {
diff --git a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java
index 3c24f37..18a9fab 100644
--- a/app/src/main/java/com/aoleyun/sn/service/main/MainService.java
+++ b/app/src/main/java/com/aoleyun/sn/service/main/MainService.java
@@ -108,14 +108,14 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
String WiFiAlias = Utils.getWifiAlias(this);
Log.e("OnNetworkStatusChanged", "onConnected: " + WiFiAlias);
JgyUtils.getInstance().addNetworkConnectedTime(System.currentTimeMillis() / 1000);
+ mPresenter.sendNetwork(JgyUtils.getInstance().getNetworkConnectedTime());
if (JgyUtils.getInstance().isScreenOn()) {
TimeTask task = new TimeTask();
task.execute("ntp.aliyun.com");
if (!checkAoleyunApp()) {
mPresenter.checkAoleyunUpdate();
}
- mPresenter.sendNetwork(JgyUtils.getInstance().getNetworkConnectedTime());
- mPresenter.getLockedState();
+ mInternetConnected.onConnected(WiFiAlias);
}
}
@@ -186,7 +186,49 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
});
}
- private static KillAppListener killAppListener;
+ private InternetConnected mInternetConnected;
+
+ public interface InternetConnected {
+ void onConnected(String alias);
+ }
+
+ private final ObservableOnSubscribe networkSubscribe = new ObservableOnSubscribe() {
+ @Override
+ public void subscribe(ObservableEmitter emitter) throws Exception {
+ mInternetConnected = new InternetConnected() {
+ @Override
+ public void onConnected(String alias) {
+ Log.e(TAG, "networkSubscribe: onConnected " + alias);
+ emitter.onNext(alias);
+ }
+ };
+ }
+ };
+
+ private Observer networkObserver = new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("networkObserver", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(String action) {
+ Log.e("networkObserver", "onNext: " + action);
+ mPresenter.getLockedState();
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("networkObserver", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("networkObserver", "onComplete: ");
+ }
+ };
+
+ private KillAppListener killAppListener;
public interface KillAppListener {
void killApp(String action);
@@ -217,6 +259,10 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
JgyUtils.getInstance().killPackage(PackageNames.NOTIFICATIONS);
JgyUtils.getInstance().killPackage(PackageNames.BROWSER);
JgyUtils.getInstance().killPackage(PackageNames.AILOG);
+ JgyUtils.getInstance().killPackage("com.jxw.launcher");
+ JgyUtils.getInstance().killPackage("com.jxw.newyouer.video");
+ JgyUtils.getInstance().killPackage("com.jxw.mskt.video");
+
// JgyUtils.getInstance().killPackage("com.ygyb.yischool");
}
@@ -446,7 +492,14 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
TimeTask task = new TimeTask();
task.execute("ntp.aliyun.com");
- mPresenter.getLockedState();
+ boolean reboot = mMMKV.decodeBool(CommonConfig.DEVICES_REBOOT, false);
+ if (reboot) {
+ mPresenter.getLockedState();
+ mMMKV.encode(CommonConfig.DEVICES_REBOOT, false);
+ Log.e(TAG, "onCreate: device rebooted");
+ } else {
+ Log.e(TAG, "onCreate: device not reboot");
+ }
Settings.Global.putString(getContentResolver(), "AOLE_SERIAL", Utils.getSerial(MainService.this));
@@ -561,6 +614,11 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
.throttleLast(30, TimeUnit.SECONDS)
// .throttleLast(3, TimeUnit.SECONDS)
.subscribe(killObserver);
+
+ Observable.create(networkSubscribe)
+ .throttleLast(1, TimeUnit.HOURS)
+ .subscribe(networkObserver);
+
JgyUtils.getInstance().checkAoleyunApp();
}
@@ -1133,9 +1191,43 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
} else {
mPresenter.getFirstConnect();
mPresenter.getStudesInfo();
+
+ mPresenter.getSystemSettingBegin();
+ mPresenter.getAppLimit();
+ mPresenter.getForceDownload();
+ mPresenter.getDefaultDesktop();
+ mPresenter.setLogoImg();
+ mPresenter.getWallpaper();
+ mPresenter.getAllAppList();
+ mPresenter.getBrowserBookmarks();
+ mPresenter.getBrowserWhiteList();
+ mPresenter.getDesktopIcon();
+ mPresenter.getAppAutoStartUpdateAndNet();
+ mPresenter.getSnAppAttr();
+ mPresenter.getAppIdControl();
+ mPresenter.setAppinsideWeb();
+ mPresenter.getSystemSetting();
+ mPresenter.getDefaultApp();
+ mPresenter.setTopApp();
+ mPresenter.getPoweroffTime();
+ mPresenter.getSnTimeControl();
+ mPresenter.getSnSetting();
+ mPresenter.getCloudLessonSettings();
+ mPresenter.getEbagCode();
+ mPresenter.getBlackList();
+ mPresenter.getWhiteList();
+ mPresenter.getWiFiPasswd();
}
- mPresenter.getDeveloper();
mPresenter.sendMacAddress();
+ mPresenter.updateDeviceInfo();
+ mPresenter.sendInstalled();
+ mPresenter.checkAoleyunUpdate();
+ mPresenter.checkTestUpdate();
+
+ mPresenter.getDeveloper();
+ mPresenter.getRomApp();
+ mPresenter.getScreenLockState();
+ mPresenter.geteFence();
}
/**
@@ -1152,7 +1244,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
SysSettingUtils.setDisableSetting(this);
JgyUtils.getInstance().writeAppPackageList();
}
- mPresenter.getSystemSettingBegin();
}
@Override
@@ -1167,23 +1258,22 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void sendMacFinish() {
- mPresenter.updateDeviceInfo();
+
}
@Override
public void updateDeviceInfoFinish() {
- mPresenter.sendInstalled();
+
}
@Override
public void sendInstalledFinish() {
Log.e(TAG, "sendInstalledFinish: ");
- mPresenter.checkAoleyunUpdate();
+
}
@Override
public void checkAoleyunUpdateFinish() {
- mPresenter.checkTestUpdate();
}
@Override
@@ -1193,12 +1283,11 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void getDeveloperFinish() {
- mPresenter.getRomApp();
+
}
@Override
public void getRomAppFinish() {
- mPresenter.getScreenLockState();
}
@Override
@@ -1218,7 +1307,6 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
SPUtils.put(this, "is_screen_lock", false);
SPUtils.put(this, "screen_tips", "");
}
- mPresenter.geteFence();
}
@Override
@@ -1228,107 +1316,107 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void setSystemSetting() {
- mPresenter.getAppLimit();
+
}
@Override
public void getAppLimitFinish() {
- mPresenter.getForceDownload();
+
}
@Override
public void getForceDownloadFinish() {
- mPresenter.getDefaultDesktop();
+
}
@Override
public void getDefaultDesktopFinish() {
- mPresenter.setLogoImg();
+
}
@Override
public void setLogoImgFinish() {
- mPresenter.getWallpaper();
+
}
@Override
public void getWallpaperFinish() {
- mPresenter.getAllAppList();
+
}
@Override
public void getAllAppListFinish() {
- mPresenter.getBrowserBookmarks();
+
}
@Override
public void getBrowserBookmarksFinish() {
- mPresenter.getBrowserWhiteList();
+
}
@Override
public void setBrowserWhiteList() {
- mPresenter.getDesktopIcon();
+
}
@Override
public void getDesktopIconFinish() {
- mPresenter.getAppAutoStartUpdateAndNet();
+
}
@Override
public void getAppAutoStartUpdateAndNetFinish() {
- mPresenter.getSnAppAttr();
+
}
@Override
public void getSnAppAttrFinish() {
- mPresenter.getAppIdControl();
+
}
@Override
public void getAppIdControlFinish() {
- mPresenter.setAppinsideWeb();
+
}
@Override
public void setAppinsideWebFinish() {
- mPresenter.getSystemSetting();
+
}
@Override
public void getSystemSettingFinish() {
- mPresenter.getDefaultApp();
+
}
@Override
public void setDefaultAppFinish() {
- mPresenter.setTopApp();
+
}
@Override
public void setTopAppFinish() {
- mPresenter.getPoweroffTime();
+
}
@Override
public void setPoweroffTime() {
- mPresenter.getSnTimeControl();
+
}
@Override
public void getSnTimeControlFinish() {
- mPresenter.getSnSetting();
+
}
@Override
public void getSnSettingFinish() {
- mPresenter.getCloudLessonSettings();
+
}
@Override
public void setCloudLessonSettings() {
- mPresenter.getEbagCode();
+
}
@Override
@@ -1340,7 +1428,7 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
// mPresenter.getBlackList();
Log.e(TAG, "getEBagCodeFinish: " + "未激活");
}
- mPresenter.getBlackList();
+
}
@Deprecated
@@ -1352,13 +1440,12 @@ public class MainService extends Service implements MainSContact.MainView, Netwo
@Override
public void getBlackListFinish() {
Log.e(TAG, "getBlackListFinish: ");
- mPresenter.getWhiteList();
+
}
@Override
public void getWhiteListFinish() {
Log.e(TAG, "getWhiteListFinish: ");
- mPresenter.getWiFiPasswd();
}
@Override
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 4a985ad..067fc67 100644
--- a/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java
+++ b/app/src/main/java/com/aoleyun/sn/utils/JgyUtils.java
@@ -2106,8 +2106,13 @@ public class JgyUtils {
if (oldStatu == (state ^ 1)) {
Log.e(TAG, "setDeveloperOptions: oldStatu = " + oldStatu + " no changed");
}
- //这个需要反着来
- Settings.System.putInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, state ^ 1);
+
+ if (MT8768Tag.equalsIgnoreCase(BuildConfig.platform)) {
+ Settings.System.putInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, state);
+ } else {
+ //这个需要反着来
+ Settings.System.putInt(crv, CommonConfig.AOLE_ACTION_DEVELOPER_OPTIONS, state ^ 1);
+ }
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));
@@ -3152,7 +3157,7 @@ public class JgyUtils {
return Build.HARDWARE;
}
- public boolean isAihuaFramwwork() {
+ public boolean isAihuaFramework() {
return (Utils.getProperty("ro.build.display.id", "获取失败").contains("_aihua"));
}
@@ -3171,8 +3176,17 @@ public class JgyUtils {
public boolean isScreenOn() {
PowerManager powerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
+ boolean isScreenOn;
+ // 使用新版本的 API,更准确
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
+ isScreenOn = powerManager.isInteractive();
+ } else {
+ // 旧版本 API(已过时,但用于兼容低版本系统)
+ isScreenOn = powerManager.isScreenOn();
+ }
+ Log.e(TAG, "isScreenOn: " + isScreenOn);
+ return isScreenOn;
//true为打开,false为关闭
- return powerManager.isInteractive();
}
private static final String CONNECTED_TIME_KEY = "connectedTimeKey";
diff --git a/app/src/main/java/com/aoleyun/sn/utils/WakeUpUtils.java b/app/src/main/java/com/aoleyun/sn/utils/WakeUpUtils.java
new file mode 100644
index 0000000..d38eb43
--- /dev/null
+++ b/app/src/main/java/com/aoleyun/sn/utils/WakeUpUtils.java
@@ -0,0 +1,119 @@
+package com.aoleyun.sn.utils;
+
+import android.annotation.SuppressLint;
+import android.app.Activity;
+import android.app.KeyguardManager;
+import android.content.Context;
+import android.os.Build;
+import android.os.PowerManager;
+import android.util.Log;
+import android.view.Window;
+import android.view.WindowManager;
+
+import androidx.annotation.RequiresApi;
+
+public class WakeUpUtils {
+
+ /**
+ * 唤醒手机屏幕并解锁
+ */
+ public static void wakeUpAndUnlock(Activity activity) {
+ // 获取电源管理器对象
+ PowerManager pm = (PowerManager) activity.getApplicationContext()
+ .getSystemService(Context.POWER_SERVICE);
+ boolean screenOn = pm.isScreenOn();
+ Log.d("WakeScreen0", "screenOn: " + screenOn);
+ if (!screenOn) {
+ // 获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
+ @SuppressLint("InvalidWakeLockTag") PowerManager.WakeLock wl = pm.newWakeLock(
+ PowerManager.ACQUIRE_CAUSES_WAKEUP |
+ PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "bright");
+ wl.acquire(10000); // 点亮屏幕
+ wl.release(); // 释放
+ }
+ // 屏幕解锁
+ KeyguardManager keyguardManager = (KeyguardManager) activity.getApplicationContext()
+ .getSystemService(Context.KEYGUARD_SERVICE);
+ KeyguardManager.KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("unLock");
+ // 屏幕锁定
+// keyguardLock.reenableKeyguard();
+ keyguardLock.disableKeyguard(); // 解锁
+ unLockScreen(activity);
+ }
+
+ private static void unLockScreen(Activity activity) {
+ final Window win = activity.getWindow();
+ win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
+ | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
+
+ win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
+ | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
+ | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
+ }
+
+ /**
+ * 唤醒手机屏幕并解锁
+ */
+ @RequiresApi(api = Build.VERSION_CODES.O)
+ public static void wakeUpAndUnlockScreen(Activity activity) {
+
+ Window win = activity.getWindow();
+ win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
+ | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
+ | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
+
+ PowerManager pm = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
+ @SuppressLint("InvalidWakeLockTag")
+ PowerManager.WakeLock wakelock = pm.newWakeLock(
+ PowerManager.FULL_WAKE_LOCK
+ | PowerManager.ACQUIRE_CAUSES_WAKEUP, "xx");
+ wakelock.acquire();
+ wakelock.release();
+
+ KeyguardManager keyguardManager = (KeyguardManager) activity.getApplicationContext()
+ .getSystemService(Context.KEYGUARD_SERVICE);
+
+ if (activity == null) return;
+ keyguardManager.requestDismissKeyguard(activity, new KeyguardManager.KeyguardDismissCallback() {
+ @Override
+ public void onDismissError() {
+ super.onDismissError();
+ Log.d("xxx-->", "1 onDismissError");
+ }
+
+ @Override
+ public void onDismissSucceeded() {
+ super.onDismissSucceeded();
+ Log.d("xxx-->", "1 onDismissSucceeded");
+ }
+
+ @Override
+ public void onDismissCancelled() {
+ super.onDismissCancelled();
+ Log.d("xxx-->", "1 onDismissCancelled");
+ }
+ });
+
+ if (activity == null) return;
+ keyguardManager.requestDismissKeyguard(activity, new KeyguardManager.KeyguardDismissCallback() {
+ @Override
+ public void onDismissError() {
+ super.onDismissError();
+ Log.d("xxx-->", "2 onDismissError");
+ }
+
+ @Override
+ public void onDismissSucceeded() {
+ super.onDismissSucceeded();
+ Log.d("xxx-->", "2 onDismissSucceeded");
+ }
+
+ @Override
+ public void onDismissCancelled() {
+ super.onDismissCancelled();
+ Log.d("xxx-->", "2 onDismissCancelled");
+ }
+ });
+
+ }
+}
diff --git a/app/src/main/res/drawable-hdpi/icon_close.png b/app/src/main/res/drawable-hdpi/icon_close.png
new file mode 100644
index 0000000..9ebcb0b
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/icon_close.png differ
diff --git a/app/src/main/res/drawable/mask.png b/app/src/main/res/drawable-hdpi/mask.png
similarity index 100%
rename from app/src/main/res/drawable/mask.png
rename to app/src/main/res/drawable-hdpi/mask.png
diff --git a/app/src/main/res/drawable/bt_emergency_normnl.xml b/app/src/main/res/drawable/bt_emergency_normnl.xml
new file mode 100644
index 0000000..01efb7f
--- /dev/null
+++ b/app/src/main/res/drawable/bt_emergency_normnl.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/dialog_background.xml b/app/src/main/res/drawable/dialog_background.xml
new file mode 100644
index 0000000..eaf60cf
--- /dev/null
+++ b/app/src/main/res/drawable/dialog_background.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_shake.xml b/app/src/main/res/drawable/ic_shake.xml
new file mode 100644
index 0000000..4888a56
--- /dev/null
+++ b/app/src/main/res/drawable/ic_shake.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/app/src/main/res/drawable/update_background.xml b/app/src/main/res/drawable/update_background.xml
new file mode 100644
index 0000000..b904dbe
--- /dev/null
+++ b/app/src/main/res/drawable/update_background.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/update_cancel_background.xml b/app/src/main/res/drawable/update_cancel_background.xml
new file mode 100644
index 0000000..58247be
--- /dev/null
+++ b/app/src/main/res/drawable/update_cancel_background.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_app_update.xml b/app/src/main/res/layout/activity_app_update.xml
new file mode 100644
index 0000000..649612f
--- /dev/null
+++ b/app/src/main/res/layout/activity_app_update.xml
@@ -0,0 +1,165 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_audio.xml b/app/src/main/res/layout/activity_audio.xml
new file mode 100644
index 0000000..c35a2b3
--- /dev/null
+++ b/app/src/main/res/layout/activity_audio.xml
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png
index 86f4829..5b8a94a 100644
Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.png and b/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.png b/app/src/main/res/mipmap-mdpi/ic_launcher.png
index 86f4829..5b8a94a 100644
Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.png and b/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png
index 86f4829..5b8a94a 100644
Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
index 86f4829..5b8a94a 100644
Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
index 86f4829..5b8a94a 100644
Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml
index 8e660ce..af658a0 100644
--- a/app/src/main/res/values/colors.xml
+++ b/app/src/main/res/values/colors.xml
@@ -62,4 +62,7 @@
#1f1f1f
#989898
+ #98999a
+ #FFD3D3D3
+ #0166ff
\ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index a3c5cbe..ad1b249 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,6 +1,6 @@
- 我的设备
+ 设备管理
卸载失败!
系统应用无法卸载!
清理垃圾 (%1$s)
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index db1596e..c0cd961 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -74,4 +74,25 @@
+
+