diff --git a/app/build.gradle b/app/build.gradle
index b21f0d9..e9d8bab 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -17,8 +17,8 @@ android {
minSdkVersion 23
targetSdkVersion 29
- versionCode 10
- versionName "1.0.9"
+ versionCode 14
+ versionName "1.1.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 8cdd981..2620926 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -152,7 +152,7 @@
android:enabled="true"
android:excludeFromRecents="true"
android:exported="true"
- android:launchMode="singleTask"
+ android:launchMode="singleTop"
android:resizeableActivity="true"
android:resumeWhilePausing="true"
android:screenOrientation="landscape"
@@ -274,8 +274,8 @@
+ android:screenOrientation="landscape"
+ android:theme="@style/AppWhiteThemeWithoutFitsSystemWindows" />
@@ -361,6 +361,11 @@
android:enabled="true"
android:exported="true" />
+
+
honorSystemApp = new ArrayList() {{
+ this.add("com.hihonor.servicecenter");
+// this.add("com.hihonor.parentcontrol");
+// this.add("com.hihonor.android.launcher");
+ }};
+
private ArrayList mPersistentApp = new ArrayList() {{
this.add(BuildConfig.APPLICATION_ID);
this.add("com.jxw.launcher");
@@ -215,13 +224,13 @@ public class HomeActivity extends BaseMvvmActivity() {
@Override
- public void onChanged(AppInfo appUpdateInfo) {
- if (appUpdateInfo == null) {
+ public void onChanged(AppInfo appInfo) {
+ if (appInfo == null) {
// Toaster.show("已是最新版本");
} else {
- if (ApkUtils.isUpdate(HomeActivity.this, appUpdateInfo)) {
+ if (ApkUtils.isUpdate(HomeActivity.this, appInfo)) {
Intent intent = new Intent(HomeActivity.this, UpdateActivity.class);
- intent.putExtra("appUpdateInfo", appUpdateInfo);
+ intent.putExtra("appInfo", appInfo);
startActivity(intent);
Toaster.show("有新的版本需要更新");
} else {
@@ -230,7 +239,26 @@ public class HomeActivity extends BaseMvvmActivity() {
+ @Override
+ public void onChanged(AppUpdateInfo appUpdateInfo) {
+ if (appUpdateInfo == null) {
+// Toaster.show("已是最新版本");
+ } else {
+ if (ApkUtils.isUpdate(HomeActivity.this, appUpdateInfo)) {
+ ApkUtils.checkAppUpdate(HomeActivity.this, appUpdateInfo);
+// Toaster.show("有新的版本需要更新");
+ } else {
+// Toaster.show("已是最新版本");
+ }
+ }
+ }
+ });
+// mViewModel.checkUpdateUiUiOS(BuildConfig.APPLICATION_ID);
+ mViewModel.checkUpdateUiUiOS("com.xwad.store");
+
+
mViewModel.mGetCodeData.observe(this, new Observer() {
@Override
public void onChanged(Boolean aBoolean) {
@@ -261,8 +289,8 @@ public class HomeActivity extends BaseMvvmActivity mAppUpdateInfoUiUiOSData = new MutableLiveData<>();
+
+ public void checkUpdateUiUiOS(String pkg) {
+ NetInterfaceManager.getInstance().getCheckUpdateObservable(pkg)
+ .compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
+ .subscribe(new Observer>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("checkUpdate", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse appUpdateInfoBaseResponse) {
+ Log.e("checkUpdate", "onNext: " + appUpdateInfoBaseResponse);
+ if (appUpdateInfoBaseResponse.code == 200) {
+ AppUpdateInfo appUpdateInfo = appUpdateInfoBaseResponse.data;
+ mAppUpdateInfoUiUiOSData.setValue(appUpdateInfo);
+ } else {
+ mAppUpdateInfoUiUiOSData.setValue(null);
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("checkUpdate", "onError: ");
+ Toaster.show("网络连接失败");
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("checkUpdate", "onComplete: ");
+ }
+ });
+ }
+
@Deprecated
public void sendAPPUsage() {
boolean activation = ActivationUtil.getInstance().isLogin();
diff --git a/app/src/main/java/com/xwad/os/activity/login/LoginActivity.java b/app/src/main/java/com/xwad/os/activity/login/LoginActivity.java
index e65ee18..a700c33 100644
--- a/app/src/main/java/com/xwad/os/activity/login/LoginActivity.java
+++ b/app/src/main/java/com/xwad/os/activity/login/LoginActivity.java
@@ -17,6 +17,7 @@ import com.xwad.os.base.mvvm.BaseMvvmActivity;
import com.xwad.os.bean.LoginInfo;
import com.xwad.os.databinding.ActivityLoginBinding;
import com.xwad.os.service.SocketService;
+import com.xwad.os.service.main.MainService;
import java.util.concurrent.TimeUnit;
@@ -56,6 +57,7 @@ public class LoginActivity extends BaseMvvmActivity urls = mHomeworkBean.getFile_url();
String url = urls.get(position);
- File file = new File(FileUtil.getDownLoadPath(mContext) + FileUtil.getFileNamefromURL(url));
+ File file = new File(FileUtils.getDownLoadPath(mContext) + FileUtils.getFileNamefromURL(url));
if (file.exists()) {
GlideLoadUtils.getInstance().glideLoadSetSize(mContext, file, holder.nv_pic, R.mipmap.ic_launcher);
holder.iv_download.setVisibility(View.GONE);
@@ -95,11 +95,11 @@ public class HomeworkDetailPicAdapter2 extends RecyclerView.Adapter mAppUpdateInfoData = new MutableLiveData<>();
- public void checkUpdate() {
- NetInterfaceManager.getInstance().getUpdateObservable(BuildConfig.APPLICATION_ID)
+ public void checkUpdate(String pkg) {
+ NetInterfaceManager.getInstance().getUpdateObservable(pkg)
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
.subscribe(new Observer>() {
@Override
@@ -66,4 +63,39 @@ public class DeviceViewModel extends BaseViewModel>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("checkStoreUpdate", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse appUpdateInfoBaseResponse) {
+ Log.e("checkStoreUpdate", "onNext: " + appUpdateInfoBaseResponse);
+ if (appUpdateInfoBaseResponse.code == 200) {
+ AppInfo appUpdateInfo = appUpdateInfoBaseResponse.data;
+ if (ApkUtils.isUpdate(getCtx(), appUpdateInfo)) {
+ ApkUtils.checkAppUpdate(getCtx(), appUpdateInfo);
+// Toaster.show("有新的版本需要更新");
+ }
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("checkStoreUpdate", "onError: " + e.getMessage());
+// Toaster.show("网络连接失败");
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("checkStoreUpdate", "onComplete: ");
+ }
+ });
+ }
+
}
diff --git a/app/src/main/java/com/xwad/os/manager/ControlManager.java b/app/src/main/java/com/xwad/os/manager/ControlManager.java
index 302c0ca..4c51496 100644
--- a/app/src/main/java/com/xwad/os/manager/ControlManager.java
+++ b/app/src/main/java/com/xwad/os/manager/ControlManager.java
@@ -849,11 +849,17 @@ public class ControlManager {
AdminManager.getInstance().removeDisallowedRunningApp("com.jxw.aizndy");
}
+ if (setting.getAi_question_test() == 0) {
+ AdminManager.getInstance().addDisallowedRunningApp("com.hihonor.magicvoice");
+ } else {
+ AdminManager.getInstance().removeDisallowedRunningApp("com.hihonor.magicvoice");
+ }
}
public void setDisallowedRunningApp() {
AdminManager.getInstance().removeDisallowedRunningApp("com.jxw.aijtjs");
AdminManager.getInstance().removeDisallowedRunningApp("com.jxw.souti");
AdminManager.getInstance().removeDisallowedRunningApp("com.jxw.aizndy");
+ AdminManager.getInstance().removeDisallowedRunningApp("com.hihonor.magicvoice");
}
}
diff --git a/app/src/main/java/com/xwad/os/mdm/AdminManager.java b/app/src/main/java/com/xwad/os/mdm/AdminManager.java
index c4046d7..ee86040 100644
--- a/app/src/main/java/com/xwad/os/mdm/AdminManager.java
+++ b/app/src/main/java/com/xwad/os/mdm/AdminManager.java
@@ -42,6 +42,7 @@ import com.xwad.os.BuildConfig;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.gson.GsonUtils;
import com.xwad.os.receiver.AoleDeviceAdminReceiver;
+import com.xwad.os.utils.ApkUtils;
import com.xwad.os.utils.JgyUtils;
import com.xwad.os.utils.Utils;
@@ -51,7 +52,8 @@ import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
-
+import java.util.function.Predicate;
+import java.util.stream.Collectors;
public class AdminManager {
private static final String TAG = "AdminManager";
@@ -361,21 +363,40 @@ public class AdminManager {
}
}
+ @Deprecated
+ public void setDisallowedRunningApp(List packageNames) {
+ if (packageNames == null || packageNames.size() == 0) return;
+ Log.e(TAG, "setDisallowedRunningApp: packageNames = " + packageNames);
+ try {
+ mDeviceApplicationManager.addDisallowedRunningApp(mAdminName, packageNames);
+ } catch (Exception e) {
+ Log.e(TAG, "setDisallowedRunningApp: " + e.getMessage());
+ }
+ Log.e(TAG, "setDisallowedRunningApp: getDisallowedRunningApp = " + getDisallowedRunningApp());
+ }
+
/**
* 添加阻止某应用启动运行名单
*
* @param packageNames
*/
public void addDisallowedRunningApp(List packageNames) {
- if (packageNames == null || packageNames.size() == 0) return;
+ if (packageNames == null || packageNames.isEmpty()) return;
Log.e(TAG, "addDisallowedRunningApp: packageNames = " + packageNames);
List packageList = getDisallowedRunningApp();
Log.e(TAG, "addDisallowedRunningApp: getDisallowedRunningApp = " + packageList);
-// if (packageList != null && packageList.size() != 0) {
-// mDeviceApplicationManager.removeDisallowedRunningApp(mAdminName, packageList);
-// }
+ if (packageList == null) {
+ packageList = new ArrayList<>();
+ }
+ packageList.addAll(packageNames);
+ packageList = packageList.stream().filter(new Predicate() {
+ @Override
+ public boolean test(String s) {
+ return ApkUtils.isAvailable(mContext, s);
+ }
+ }).collect(Collectors.toList());
try {
- mDeviceApplicationManager.addDisallowedRunningApp(mAdminName, packageNames);
+ mDeviceApplicationManager.addDisallowedRunningApp(mAdminName, packageList);
} catch (Exception e) {
Log.e(TAG, "addDisallowedRunningApp: " + e.getMessage());
}
@@ -390,6 +411,10 @@ public class AdminManager {
*/
public void addDisallowedRunningApp(String pkg) {
Log.e(TAG, "addDisallowedRunningApp: " + pkg);
+// if (ApkUtils.isSystemApp(mContext, pkg)) {
+// Log.e(TAG, "addDisallowedRunningApp: can not add system app to list");
+// return;
+// }
List packageList = getDisallowedRunningApp();
// List packageList = new ArrayList<>();
Log.e(TAG, "addDisallowedRunningApp: packageList = " + packageList);
@@ -409,8 +434,19 @@ public class AdminManager {
* @param packageNames
*/
public void removeDisallowedRunningApp(List packageNames) {
+ Log.e(TAG, "removeDisallowedRunningApp: " + packageNames);
if (packageNames == null || packageNames.size() == 0) return;
- mDeviceApplicationManager.removeDisallowedRunningApp(mAdminName, packageNames);
+ List pkgs = packageNames.stream().filter(new Predicate() {
+ @Override
+ public boolean test(String s) {
+ return ApkUtils.isAvailable(mContext, s);
+ }
+ }).collect(Collectors.toList());
+ try {
+ mDeviceApplicationManager.removeDisallowedRunningApp(mAdminName, pkgs);
+ } catch (Exception e) {
+ Log.e(TAG, "removeDisallowedRunningApp: Exception " + e.getMessage());
+ }
Log.e(TAG, "removeDisallowedRunningApp: getDisallowedRunningApp = " + getDisallowedRunningApp());
}
@@ -699,8 +735,7 @@ public class AdminManager {
private Set defaultAllowInstallPackages = new HashSet() {{
this.add(BuildConfig.APPLICATION_ID);
this.add("com.xwad.store");
- this.add("com.uiui.aios");
- this.add("com.uiui.appstore");
+ this.add("com.uiui.zyappstore");
}};
public void setInstallPackageDefaultTrustList(List packages) {
@@ -1917,11 +1952,11 @@ public class AdminManager {
Log.e(TAG, "setYoyoDisabled: disable = " + disable);
try {
if (disable) {
- AdminManager.getInstance().addDisallowedRunningApp("com.hihonor.servicecenter");
- AdminManager.getInstance().addDisallowedRunningApp("com.hihonor.magicvoice");
+ addDisallowedRunningApp("com.hihonor.servicecenter");
+ addDisallowedRunningApp("com.hihonor.magicvoice");
} else {
- AdminManager.getInstance().removeDisallowedRunningApp("com.hihonor.servicecenter");
- AdminManager.getInstance().removeDisallowedRunningApp("com.hihonor.magicvoice");
+ removeDisallowedRunningApp("com.hihonor.servicecenter");
+ removeDisallowedRunningApp("com.hihonor.magicvoice");
}
return mDeviceRestrictionManager.setVoiceAssistantButtonDisabled(mAdminName, disable);
} catch (Exception e) {
diff --git a/app/src/main/java/com/xwad/os/network/NetInterfaceManager.java b/app/src/main/java/com/xwad/os/network/NetInterfaceManager.java
index 28c8b0d..2328968 100644
--- a/app/src/main/java/com/xwad/os/network/NetInterfaceManager.java
+++ b/app/src/main/java/com/xwad/os/network/NetInterfaceManager.java
@@ -24,8 +24,8 @@ import com.trello.rxlifecycle4.android.FragmentEvent;
import com.xwad.os.BuildConfig;
import com.xwad.os.alarm.AlarmUtils;
import com.xwad.os.bean.AlarmClockData;
+import com.xwad.os.bean.AppIcon;
import com.xwad.os.bean.AppInfo;
-import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.AppUploadInfo;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.bean.CodeBean;
@@ -46,6 +46,7 @@ import com.xwad.os.bean.UserAvatarInfo;
import com.xwad.os.bean.UserInfo;
import com.xwad.os.bean.VipInfo;
import com.xwad.os.bean.WhoisBean;
+import com.xwad.os.bean.uiuios.AppUpdateInfo;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.disklrucache.CacheHelper;
import com.xwad.os.gson.GsonUtils;
@@ -55,6 +56,7 @@ import com.xwad.os.network.api.AlarmClockApi;
import com.xwad.os.network.api.AppApi;
import com.xwad.os.network.api.AppUsageRecordApi;
import com.xwad.os.network.api.FilesApi;
+import com.xwad.os.network.api.GetAppIconApi;
import com.xwad.os.network.api.GetWhoisApi;
import com.xwad.os.network.api.HomeworkApi;
import com.xwad.os.network.api.LoginApi;
@@ -67,7 +69,6 @@ import com.xwad.os.network.api.UserApi;
import com.xwad.os.network.api.jxw.JxwApi;
import com.xwad.os.network.api.uiuios.CheckUpdateApi;
import com.xwad.os.network.interceptor.RepeatRequestInterceptor;
-import com.xwad.os.service.ManagerService;
import com.xwad.os.utils.ActivationUtil;
import com.xwad.os.utils.ApkUtils;
import com.xwad.os.utils.BitmapUtils;
@@ -555,7 +556,12 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
-
+ public Observable>> getAppIconObservable() {
+ return mRetrofit.create(GetAppIconApi.class)
+ .getAppIcon(Utils.getSerial())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread());
+ }
public Observable getOauthTokenObservable() {
Map params = new HashMap<>();
@@ -1050,7 +1056,7 @@ public class NetInterfaceManager {
softwareJson.addProperty("info_version", ApkUtils.getAPPVersionName(mContext, JgyUtils.PACKAGE_DEVICEINFO));
softwareJson.addProperty("browser_version", ApkUtils.getAPPVersionName(mContext, JgyUtils.PACKAGE_BROWSER));
softwareJson.addProperty("notice_version", ApkUtils.getAPPVersionName(mContext, "com.uiui.info"));
- softwareJson.addProperty("desktop_version", ApkUtils.getAPPVersionName(mContext,BuildConfig.APPLICATION_ID));
+ softwareJson.addProperty("desktop_version", ApkUtils.getAPPVersionName(mContext, BuildConfig.APPLICATION_ID));
softwareJson.addProperty("appstore_install_time", ApkUtils.getAppLastUpdateTime(mContext, JgyUtils.PACKAGE_APPSTORE));
softwareJson.addProperty("info_install_time", ApkUtils.getAppLastUpdateTime(mContext, JgyUtils.PACKAGE_DEVICEINFO));
@@ -1141,6 +1147,25 @@ public class NetInterfaceManager {
this.add("com.android.documentsui");
this.add("org.chromium.browser");
+ this.add("com.hihonor.notepad");
+ this.add("com.hihonor.devicefinder");
+ this.add("com.hihonor.email");
+ this.add("com.hihonor.kidsmode");
+ this.add("com.hihonor.servicecenter");
+ this.add("com.hihonor.parentcontrol");
+ this.add("com.hihonor.baidu.browser");
+ this.add("cn.honor.qinxuan");
+ this.add("com.hihonor.vmall");
+ this.add("com.hihonor.search");
+ this.add("com.hihonor.hnofficelauncher");
+ this.add("com.hihonor.youku.video");
+ this.add("com.hihonor.quickgamecenter");
+ this.add("com.hihonor.edulauncher");
+ this.add("com.hihonor.cloudmusic");
+ this.add("com.hihonor.appmarket");
+ this.add("com.hihonor.gamecenter");
+ this.add("com.hihonor.dz.reader");
+ this.add("com.hihonor.magichome");
}};
public static long getPackageSize(Context context, String filePath) {
@@ -1164,11 +1189,11 @@ public class NetInterfaceManager {
List appsWithLauncher = pm.queryIntentActivities(intent, 0);
Log.e("SendAppInstallInfo", "appsWithLauncher: " + appsWithLauncher);
List pkgs = new ArrayList<>();
- for (PackageInfo packageInfo : installedPackages) {
- if (pm.getApplicationEnabledSetting(packageInfo.packageName) == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
- pkgs.add(packageInfo.packageName);
- }
- }
+// for (PackageInfo packageInfo : installedPackages) {
+// if (pm.getApplicationEnabledSetting(packageInfo.packageName) == PackageManager.COMPONENT_ENABLED_STATE_DISABLED) {
+// pkgs.add(packageInfo.packageName);
+// }
+// }
for (ResolveInfo info : appsWithLauncher) {
pkgs.add(info.activityInfo.packageName);
}
@@ -1468,7 +1493,7 @@ public class NetInterfaceManager {
mCacheHelper.put(UrlAddress.LOCK_SCREEN_PWD, "");
} else {
mCacheHelper.put(UrlAddress.LOCK_SCREEN_PWD, GsonUtils.toJSONString(screenPassword));
- mMMKV.encode(ManagerService.LOCK_SCREEN_PASSWORD, screenPassword.getPwd());
+ mMMKV.encode(CommonConfig.LOCK_SCREEN_PASSWORD, screenPassword.getPwd());
}
} else {
mCacheHelper.put(UrlAddress.LOCK_SCREEN_PWD, "");
@@ -1526,4 +1551,67 @@ public class NetInterfaceManager {
});
}
+ public interface AppIconCallback {
+ void onComplete();
+ }
+
+ public void getAppIcon() {
+ getAppIconObservable()
+ .subscribe(getAppIconObserver(null));
+ }
+
+ public void getAppIcon(AppIconCallback callback) {
+ getAppIconObservable()
+ .subscribe(getAppIconObserver(callback));
+ }
+
+ public void getAppIcon(BehaviorSubject lifecycle, AppIconCallback callback) {
+ getAppIconObservable()
+ .compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
+ .subscribe(getAppIconObserver(callback));
+ }
+
+
+ public Observer>> getAppIconObserver(AppIconCallback callback) {
+ return new Observer>>() {
+ @Override
+ public void onSubscribe(@NonNull Disposable d) {
+ Log.e("getAppIcon", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(@NonNull BaseResponse> baseResponse) {
+ Log.e("getAppIcon", "onNext: " + baseResponse);
+ if (baseResponse.code == 200) {
+ List appIconList = baseResponse.data;
+ Set pkgList = appIconList.stream().map(new java.util.function.Function() {
+ @Override
+ public String apply(AppIcon appIcon) {
+ return appIcon.getApp_package();
+ }
+ }).collect(Collectors.toSet());
+ Set stringSet = mMMKV.decodeStringSet(CommonConfig.APP_ICON_HIND_SET_KEY, new HashSet<>());
+ AdminManager.getInstance().removeDisallowedRunningApp(new ArrayList<>(stringSet));
+ mMMKV.encode(CommonConfig.APP_ICON_HIND_SET_KEY, pkgList);
+ AdminManager.getInstance().addDisallowedRunningApp(new ArrayList<>(pkgList));
+ } else {
+ Set stringSet = mMMKV.decodeStringSet(CommonConfig.APP_ICON_HIND_SET_KEY, new HashSet<>());
+ AdminManager.getInstance().removeDisallowedRunningApp(new ArrayList<>(stringSet));
+ }
+ }
+
+ @Override
+ public void onError(@NonNull Throwable e) {
+ Log.e("getAppIcon", "onError: " + e.getMessage());
+ onComplete();
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("getAppIcon", "onComplete: ");
+ if (callback != null)
+ callback.onComplete();
+ }
+ };
+ }
}
diff --git a/app/src/main/java/com/xwad/os/network/UrlAddress.java b/app/src/main/java/com/xwad/os/network/UrlAddress.java
index a5922c5..0f52b22 100644
--- a/app/src/main/java/com/xwad/os/network/UrlAddress.java
+++ b/app/src/main/java/com/xwad/os/network/UrlAddress.java
@@ -107,6 +107,9 @@ public class UrlAddress {
/*获取系统设置*/
public final static String GET_SETTINGS = "control/getSetting";
+ /*获取禁用包名*/
+ public static final String GET_APP_ICON = "getAppIcon";
+
public static final String UIUIOS_ROOT_URL = "https://map.uiuios.com/android/";
/*获取应用更新*/
@Deprecated
diff --git a/app/src/main/java/com/xwad/os/network/api/GetAppIconApi.java b/app/src/main/java/com/xwad/os/network/api/GetAppIconApi.java
new file mode 100644
index 0000000..df28a9d
--- /dev/null
+++ b/app/src/main/java/com/xwad/os/network/api/GetAppIconApi.java
@@ -0,0 +1,18 @@
+package com.xwad.os.network.api;
+
+import com.xwad.os.bean.AppIcon;
+import com.xwad.os.bean.BaseResponse;
+import com.xwad.os.network.UrlAddress;
+
+import java.util.List;
+
+import io.reactivex.rxjava3.core.Observable;
+import retrofit2.http.GET;
+import retrofit2.http.Query;
+
+public interface GetAppIconApi {
+ @GET(UrlAddress.GET_APP_ICON)
+ Observable>> getAppIcon(
+ @Query("sn") String sn
+ );
+}
diff --git a/app/src/main/java/com/xwad/os/network/api/uiuios/CheckUpdateApi.java b/app/src/main/java/com/xwad/os/network/api/uiuios/CheckUpdateApi.java
index 11a387a..e2feae1 100644
--- a/app/src/main/java/com/xwad/os/network/api/uiuios/CheckUpdateApi.java
+++ b/app/src/main/java/com/xwad/os/network/api/uiuios/CheckUpdateApi.java
@@ -1,7 +1,7 @@
package com.xwad.os.network.api.uiuios;
-import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.BaseResponse;
+import com.xwad.os.bean.uiuios.AppUpdateInfo;
import com.xwad.os.network.UrlAddress;
import io.reactivex.rxjava3.core.Observable;
diff --git a/app/src/main/java/com/xwad/os/push/PushManager.java b/app/src/main/java/com/xwad/os/push/PushManager.java
index 3bd4a12..9096d71 100644
--- a/app/src/main/java/com/xwad/os/push/PushManager.java
+++ b/app/src/main/java/com/xwad/os/push/PushManager.java
@@ -4,11 +4,17 @@ import android.annotation.SuppressLint;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageManager;
import android.graphics.Bitmap;
+import android.os.Build;
+import android.os.Handler;
+import android.os.Looper;
import android.os.PowerManager;
import android.text.TextUtils;
import android.util.Log;
+import com.arialyy.aria.core.Aria;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.hjq.toast.Toaster;
@@ -29,6 +35,7 @@ import com.xwad.os.service.ManagerService;
import com.xwad.os.service.main.MainService;
import com.xwad.os.utils.ApkUtils;
import com.xwad.os.utils.BitmapUtils;
+import com.xwad.os.utils.FileUtils;
import com.xwad.os.utils.JgyUtils;
import com.xwad.os.utils.ServiceAliveUtils;
import com.xwad.os.utils.Utils;
@@ -281,6 +288,8 @@ public class PushManager {
private static final String PHOTO_SEARCH_QUESTIONS = "124";
/*AI答疑测试*/
private static final String AI_QA_TEST = "125";
+ /*语音助手*/
+ private static final String Voice_assistant = "126";
public void setPushContent(String title, String extras) {
@@ -297,10 +306,27 @@ public class PushManager {
Toaster.debugShow("收到推送消息: USB连接模式管控");
setUsbStatus(extras);
break;
+ case FORCE_INSTALLAPK:
+ Toaster.debugShow("收到推送消息: 强制安装应用");
+// NetInterfaceManager.getInstance().getAllappPackage();
+// NetInterfaceManager.getInstance().getForceInstall();
+ intallApk(extras);
+ break;
+ case FORCE_UNINSTALLAPK:
+ Toaster.debugShow("收到推送消息: 强制卸载应用");
+ unintallApk(extras);
+ break;
case REBOOT_DEVICES:
Toaster.debugShow("收到推送消息: 重启");
AdminManager.getInstance().rebootDevice();
break;
+ case FORCE_KILL:
+ Toaster.debugShow("收到推送消息: 强制停止应用");
+ JsonObject killJSONObject = GsonUtils.getJsonObject(extras);
+ String app_package = killJSONObject.get("app_package").getAsString();
+ AdminManager.getInstance().killApplicationProcess(app_package);
+ Log.e(TAG, extras);
+ break;
case LOCK_SCREEN:
Toaster.debugShow("收到推送消息: 锁屏");
setLockScreen(extras);
@@ -311,10 +337,18 @@ public class PushManager {
screenshot(extras);
Log.e(TAG, extras);
break;
+ case CLEAN_APP_CACHE:
+ Toaster.debugShow("收到推送消息: 清除应用缓存");
+ cleanAppCache(extras);
+ break;
case ALARM_CLOCK:
Toaster.debugShow("收到推送消息: 设置闹钟");
sendAlarmClock(extras);
break;
+ case HIDE_APPICON:
+ new Handler(Looper.getMainLooper()).postDelayed(() -> NetInterfaceManager.getInstance().getAppIcon(() -> {
+ }), 2000);
+ break;
case KILL_APP:
Toaster.debugShow("收到推送消息: 内存优化");
killBackgroundApp();
@@ -336,6 +370,9 @@ public class PushManager {
case GO_ANDROID:
setReturnAndrdoid(extras);
break;
+ case UPGRADE_PASSWD:
+ NetInterfaceManager.getInstance().getLockScreenPwd();
+ break;
case BLUETOOTH_TRANSFER:
setBluetoothTransfer(extras);
break;
@@ -373,10 +410,28 @@ public class PushManager {
case AI_QA_TEST:
setAiQuestionTest(extras);
break;
+ case Voice_assistant:
+ setVoiceAssistant(extras);
+ break;
default:
}
}
+ private void setVoiceAssistant(String extras) {
+ JsonObject jsonObject = GsonUtils.getJsonObject(extras);
+ JsonElement jsonElement = jsonObject.get("sys_voice_assistant");
+ if (jsonElement == null || jsonElement.isJsonNull()) {
+ Log.e(TAG, "setVoiceAssistant: jsonElement is null");
+ return;
+ }
+ int sys_voice_assistant = jsonElement.getAsInt();
+ if (sys_voice_assistant == 0) {
+ AdminManager.getInstance().addDisallowedRunningApp("com.hihonor.magicvoice");
+ } else {
+ AdminManager.getInstance().removeDisallowedRunningApp("com.hihonor.magicvoice");
+ }
+ }
+
private void setAiTeacher(String extras) {
JsonObject jsonObject = GsonUtils.getJsonObject(extras);
JsonElement jsonElement = jsonObject.get("ai_teacher");
@@ -595,6 +650,61 @@ public class PushManager {
}
}
+ //静默安装应用,使用okgo,断网会出现问题,等待修改使用aria
+ private void intallApk(String jsonString) {
+ if (TextUtils.isEmpty(jsonString)) {
+ return;
+ }
+ JsonObject extra = GsonUtils.getJsonObject(jsonString);
+ String packages = extra.get("package").getAsString();
+ long app_version_code = extra.get("app_version_code").getAsLong();
+ Toaster.debugShow("收到应用安装消息:包名" + packages);
+ String url = extra.get("url").getAsString();
+ if (TextUtils.isEmpty(url)) {
+ return;
+ }
+ PackageManager pm = mContext.getPackageManager();
+ PackageInfo packageInfo = null;
+ try {
+ packageInfo = pm.getPackageInfo(packages, 0);
+
+ } catch (PackageManager.NameNotFoundException e) {
+ e.printStackTrace();
+ }
+ if (packageInfo != null) {
+ long appVersionCode;
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ appVersionCode = packageInfo.getLongVersionCode();
+ } else {
+ appVersionCode = packageInfo.versionCode;
+ }
+ if (app_version_code > appVersionCode) {
+ FileUtils.ariaDownload(mContext, url, extra);
+ } else {
+ Log.e(TAG, "intallApk: " + packages + " is up to date");
+ }
+ } else {
+ FileUtils.ariaDownload(mContext, url, extra);
+ }
+ Aria.download(this).resumeAllTask();
+ }
+
+ private void unintallApk(String jsonString) {
+ JsonObject object = GsonUtils.getJsonObject(jsonString);
+ String packageName = object.get("app_package").getAsString();
+ // 台电设备不删除无法静默卸载
+// removeForceSettings(packageName);
+ Toaster.debugShow("收到应用卸载消息:包名" + packageName);
+ if (!"".equals(packageName) && !packageName.equals(mContext.getPackageName())) {
+ if (!ApkUtils.isAvailable(mContext, packageName)) {
+// NetInterfaceManager.getInstance().setAppuninstallInfo(sn_id, packageName);
+ } else {
+ AdminManager.getInstance().removeDisallowedRunningApp(packageName);
+ AdminManager.getInstance().uninstallPackage(packageName);
+ }
+ }
+ }
+
private void startHome() {
Intent intent = new Intent(mContext, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
@@ -711,6 +821,21 @@ public class PushManager {
});
}
+ private void cleanAppCache(String jsonString) {
+ JsonObject jsonObject = GsonUtils.getJsonObject(jsonString);
+ String pkg = jsonObject.get("package").getAsString();
+ if (TextUtils.isEmpty(pkg)) {
+ Log.e(TAG, "cleanAppCache: pkg is null");
+ return;
+ }
+ try {
+ AdminManager.getInstance().clearPackageData(pkg);
+ } catch (Exception e) {
+ e.printStackTrace();
+ Log.e(TAG, "cleanAppCache: " + e.getMessage());
+ }
+ }
+
private void sendZyosRefreshIntent() {
Intent intent = new Intent(UserFragment.ACTION_REFRESH_BINDING_STATUS);
intent.setPackage("com.uiui.zyos");
diff --git a/app/src/main/java/com/xwad/os/receiver/ApkInstallReceiver.java b/app/src/main/java/com/xwad/os/receiver/ApkInstallReceiver.java
index c9f50e2..d7f9a5d 100644
--- a/app/src/main/java/com/xwad/os/receiver/ApkInstallReceiver.java
+++ b/app/src/main/java/com/xwad/os/receiver/ApkInstallReceiver.java
@@ -11,14 +11,28 @@ import com.xwad.os.BuildConfig;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.fragment.user.UserFragment;
import com.xwad.os.jxw.JxwPackageConfig;
+import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.service.main.MainService;
import com.xwad.os.utils.ActivationUtil;
+import java.util.concurrent.TimeUnit;
+
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.ObservableEmitter;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+
public class ApkInstallReceiver extends BroadcastReceiver {
private static final String TAG = "APKinstallReceiver";
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+ private static NewAppListener newAppListener;
+
+ static {
+ sendAppInfo();
+ }
+
@Override
public void onReceive(final Context context, Intent intent) {
// an Intent broadcast.
@@ -57,4 +71,41 @@ public class ApkInstallReceiver extends BroadcastReceiver {
}
+ public interface NewAppListener {
+ void setNewAppListener(String packageName);
+ }
+
+ private static void sendAppInfo() {
+ MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+ Observable.create((ObservableEmitter emitter) -> newAppListener = emitter::onNext)
+ .throttleLast(1, TimeUnit.MINUTES)
+ .subscribe(new Observer() {
+ @Override
+ public void onSubscribe(Disposable d) {
+ Log.e("sendAppInfo", "onSubscribe: ");
+ }
+
+ @Override
+ public void onNext(String s) {
+ Log.e("sendAppInfo", "onNext: " + s);
+ int isLogined = mMMKV.decodeInt(CommonConfig.isLogined, 0);
+ if (isLogined != 1) return;
+ NetInterfaceManager.getInstance().updateAdminInfo();
+ NetInterfaceManager.getInstance().SendAppInstallInfo();
+// NetInterfaceManager.getInstance().getForceInstall();
+// NetInterfaceManager.getInstance().getAllappPackage(null);
+ NetInterfaceManager.getInstance().getAppIcon();
+ }
+
+ @Override
+ public void onError(Throwable e) {
+ Log.e("sendAppInfo", "onError: " + e.getMessage());
+ }
+
+ @Override
+ public void onComplete() {
+ Log.e("sendAppInfo", "onComplete: ");
+ }
+ });
+ }
}
diff --git a/app/src/main/java/com/xwad/os/service/ManagerService.java b/app/src/main/java/com/xwad/os/service/ManagerService.java
index e66501b..9881eee 100644
--- a/app/src/main/java/com/xwad/os/service/ManagerService.java
+++ b/app/src/main/java/com/xwad/os/service/ManagerService.java
@@ -32,8 +32,8 @@ import com.blankj.utilcode.util.NetworkUtils;
import com.google.gson.JsonObject;
import com.tencent.mmkv.MMKV;
import com.tuo.customview.VerificationCodeView;
-import com.uiui.zy.KeepAliveConnection;
import com.xwad.os.BuildConfig;
+import com.xwad.os.KeepAliveConnection;
import com.xwad.os.R;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.config.CommonConfig;
@@ -69,8 +69,6 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta
public static final String ACTION_LOCK = BuildConfig.APPLICATION_ID + "_LockScreenReceiver_lockscreen";
public static final String ACTION_UNLOCK = BuildConfig.APPLICATION_ID + "_LockScreenReceiver_unlockscreen";
public static final String ACTION_UPDATE = BuildConfig.APPLICATION_ID + "_TimeChangedReceiver_update";
- public static final String LOCK_SCREEN_PASSWORD = "Iflytek_lockScreenPasswordKey";
- public static final String DEFAULT_PASSWORD = "072814";
private WindowManager windowManager;
private View topView;
@@ -467,10 +465,10 @@ public class ManagerService extends Service implements NetworkUtils.OnNetworkSta
return;
}
Log.e(TAG, "inputComplete: " + content);
- String password = mMMKV.decodeString(LOCK_SCREEN_PASSWORD, DEFAULT_PASSWORD);
+ String password = mMMKV.decodeString(CommonConfig.LOCK_SCREEN_PASSWORD, CommonConfig.DEFAULT_PASSWORD);
if (password.equals(content)) {
hide();
- } else if (DEFAULT_PASSWORD.equals(content)) {
+ } else if (CommonConfig.DEFAULT_PASSWORD.equals(content)) {
hide();
} else {
postDelayed(codeView, tv_hint);
diff --git a/app/src/main/java/com/xwad/os/service/RemoteService.java b/app/src/main/java/com/xwad/os/service/RemoteService.java
new file mode 100644
index 0000000..92e3a28
--- /dev/null
+++ b/app/src/main/java/com/xwad/os/service/RemoteService.java
@@ -0,0 +1,51 @@
+package com.xwad.os.service;
+
+import android.app.Service;
+import android.content.Intent;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Log;
+
+import com.tencent.mmkv.MMKV;
+import com.xwad.os.IGetInfoInterface;
+import com.xwad.os.config.CommonConfig;
+import com.xwad.os.utils.Utils;
+
+public class RemoteService extends Service {
+ private static final String TAG = "RemoteService";
+
+ private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
+
+ public RemoteService() {
+ }
+
+ @Override
+ public IBinder onBind(Intent intent) {
+ Log.e(TAG, "onBind: ");
+ return mBinde;
+ }
+
+ @Override
+ public void onCreate() {
+ Log.e(TAG, "onCreate: ");
+ super.onCreate();
+ }
+
+ @Override
+ public int onStartCommand(Intent intent, int flags, int startId) {
+ Log.e(TAG, "onStartCommand: ");
+ return super.onStartCommand(intent, flags, startId);
+ }
+
+ private IBinder mBinde = new IGetInfoInterface.Stub() {
+ @Override
+ public void basicTypes(int anInt, long aLong, boolean aBoolean, float aFloat, double aDouble, String aString) throws RemoteException {
+
+ }
+
+ @Override
+ public String getSerial() throws RemoteException {
+ return Utils.getSerial();
+ }
+ };
+}
diff --git a/app/src/main/java/com/xwad/os/service/SocketService.java b/app/src/main/java/com/xwad/os/service/SocketService.java
index 3232866..113ce14 100644
--- a/app/src/main/java/com/xwad/os/service/SocketService.java
+++ b/app/src/main/java/com/xwad/os/service/SocketService.java
@@ -153,6 +153,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat
initOnlineSocketClient();
initSsoSocketClient();
initPush();
+ NetInterfaceManager.getInstance().getSystemSettings();
break;
default:
}
diff --git a/app/src/main/java/com/xwad/os/service/main/MainSPresenter.java b/app/src/main/java/com/xwad/os/service/main/MainSPresenter.java
index 54a3250..8abb4b1 100644
--- a/app/src/main/java/com/xwad/os/service/main/MainSPresenter.java
+++ b/app/src/main/java/com/xwad/os/service/main/MainSPresenter.java
@@ -8,7 +8,6 @@ import com.google.gson.JsonObject;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
-import com.xwad.os.bean.AlarmClockData;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.config.CommonConfig;
@@ -109,7 +108,8 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void updateDeviceInfo() {
-
+ NetInterfaceManager.getInstance().updateAdminInfo();
+ NetInterfaceManager.getInstance().SendAppInstallInfo();
}
@Override
@@ -129,7 +129,12 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getAppIcon() {
-
+ NetInterfaceManager.getInstance().getAppIcon(getLifecycle(), new NetInterfaceManager.AppIconCallback() {
+ @Override
+ public void onComplete() {
+ Log.e("getAppIcon", "onComplete: ");
+ }
+ });
}
@Override
@@ -253,7 +258,12 @@ public class MainSPresenter implements MainSContact.Presenter {
@Override
public void getLockScreenPwd() {
-
+ NetInterfaceManager.getInstance().getLockScreenPwd(lifecycle, new NetInterfaceManager.OnCompleteCallback() {
+ @Override
+ public void onComplete() {
+ mView.setLockScreenPwd();
+ }
+ });
}
diff --git a/app/src/main/java/com/xwad/os/service/main/MainService.java b/app/src/main/java/com/xwad/os/service/main/MainService.java
index 5b81d83..ce6387d 100644
--- a/app/src/main/java/com/xwad/os/service/main/MainService.java
+++ b/app/src/main/java/com/xwad/os/service/main/MainService.java
@@ -19,7 +19,7 @@ import com.blankj.utilcode.util.NetworkUtils;
import com.tencent.mmkv.MMKV;
import com.xwad.os.R;
import com.xwad.os.activity.NoticeActivity;
-import com.xwad.os.activity.main.MainActivity;
+import com.xwad.os.activity.home.HomeActivity;
import com.xwad.os.alarm.AlarmUtils;
import com.xwad.os.base.rx.BaseRxService;
import com.xwad.os.bean.AlarmClockData;
@@ -28,6 +28,7 @@ import com.xwad.os.bean.BaseResponse;
import com.xwad.os.bean.IsActivationBean;
import com.xwad.os.bean.SnInfo;
import com.xwad.os.config.CommonConfig;
+import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.service.SocketService;
import java.util.Calendar;
@@ -74,11 +75,6 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
mPresenter.attachView(this);
mPresenter.setLifecycle(getLifecycleSubject());
- mPresenter.getCloudLessonSettings();
- mPresenter.getScreenLock();
- mPresenter.getAdminApp();
- mPresenter.getSystemSettings();
-
registerReceivers();
NetworkUtils.registerNetworkStatusChangedListener(this);
startJxwLauncher();
@@ -92,11 +88,37 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
Log.e(TAG, "setDefault: startServices time = " + (System.currentTimeMillis() - time) + "ms");
+ getSystemSettings();
+
+ }
+
+ private void getSystemSettings() {
+ mPresenter.getCloudLessonSettings();
+ mPresenter.updateDeviceInfo();
+ mPresenter.getAppIcon();
+ mPresenter.getScreenLock();
+ mPresenter.getAdminApp();
+ mPresenter.getSystemSettings();
+ mPresenter.getLockScreenPwd();
+
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Log.e(TAG, "onStartCommand: ");
+ if (intent != null) {
+ String action = intent.getAction();
+ if (!TextUtils.isEmpty(action)) {
+ Log.e(TAG, "onStartCommand: action = " + action);
+ switch (action) {
+ case SocketService.LOGIN_SUCCESSFUL:
+ getSystemSettings();
+ NetInterfaceManager.getInstance().getSystemSettings();
+ break;
+ default:
+ }
+ }
+ }
return START_STICKY;
}
@@ -129,7 +151,7 @@ public class MainService extends BaseRxService implements MainSContact.MainSView
private int NotificationID = 1;
private void sendSimpleNotification() {
- Intent intent = new Intent(this, MainActivity.class);
+ Intent intent = new Intent(this, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
diff --git a/app/src/main/java/com/xwad/os/utils/ApkUtils.java b/app/src/main/java/com/xwad/os/utils/ApkUtils.java
index f8f34d7..173343d 100644
--- a/app/src/main/java/com/xwad/os/utils/ApkUtils.java
+++ b/app/src/main/java/com/xwad/os/utils/ApkUtils.java
@@ -24,9 +24,8 @@ import com.hjq.toast.Toaster;
import com.xwad.os.BuildConfig;
import com.xwad.os.R;
import com.xwad.os.bean.AppInfo;
-import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.DesktopIcon;
-import com.xwad.os.mdm.AdminManager;
+import com.xwad.os.bean.uiuios.AppUpdateInfo;
import com.xwad.os.receiver.InstallResultReceiver;
import java.io.BufferedReader;
@@ -896,10 +895,10 @@ public class ApkUtils {
installApkFile(context, apk);
}
- public static void checkAppUpdate(Context context, AppInfo appUpdateInfo) {
- String packageName = appUpdateInfo.getApp_package();
- long versionCode = appUpdateInfo.getApp_version_code();
- String url = appUpdateInfo.getApp_url();
+ public static void checkAppUpdate(Context context, AppInfo appInfo) {
+ String packageName = appInfo.getApp_package();
+ long versionCode = appInfo.getApp_version_code();
+ String url = appInfo.getApp_url();
PackageInfo packageInfo = null;
try {
packageInfo = context.getPackageManager().getPackageInfo(packageName, 0);
@@ -907,7 +906,7 @@ public class ApkUtils {
e.printStackTrace();
}
if (packageInfo == null) {
- FileUtil.ariaDownload(context, url, appUpdateInfo);
+ FileUtils.ariaDownload(context, url, appInfo);
} else {
long appVersionCode;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -916,7 +915,7 @@ public class ApkUtils {
appVersionCode = packageInfo.versionCode;
}
if (appVersionCode < versionCode) {
- FileUtil.ariaDownload(context, url, appUpdateInfo);
+ FileUtils.ariaDownload(context, url, appInfo);
} else {
Log.e(TAG, "checkUpdate: " + packageName + "\t已经是最新版");
}
@@ -934,7 +933,7 @@ public class ApkUtils {
e.printStackTrace();
}
if (packageInfo == null) {
- FileUtil.ariaDownload(context, url, appUpdateInfo);
+ FileUtils.ariaDownload(context, url, appUpdateInfo);
} else {
long appVersionCode;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
@@ -943,7 +942,7 @@ public class ApkUtils {
appVersionCode = packageInfo.versionCode;
}
if (appVersionCode < versionCode) {
- FileUtil.ariaDownload(context, url, appUpdateInfo);
+ FileUtils.ariaDownload(context, url, appUpdateInfo);
} else {
Log.e(TAG, "checkUpdate: " + packageName + "\t已经是最新版");
}
diff --git a/app/src/main/java/com/xwad/os/utils/FileUtil.java b/app/src/main/java/com/xwad/os/utils/FileUtils.java
similarity index 92%
rename from app/src/main/java/com/xwad/os/utils/FileUtil.java
rename to app/src/main/java/com/xwad/os/utils/FileUtils.java
index 3eafcf6..21a0300 100644
--- a/app/src/main/java/com/xwad/os/utils/FileUtil.java
+++ b/app/src/main/java/com/xwad/os/utils/FileUtils.java
@@ -2,10 +2,12 @@ package com.xwad.os.utils;
import android.content.ContentResolver;
import android.content.Context;
+import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.net.Uri;
+import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.text.TextUtils;
@@ -14,21 +16,25 @@ import android.util.Log;
import androidx.core.content.ContextCompat;
import com.arialyy.aria.core.Aria;
+import com.google.gson.Gson;
+import com.google.gson.JsonObject;
+import com.google.gson.reflect.TypeToken;
import com.xwad.os.bean.AppInfo;
-import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.AriaDownloadInfo;
import com.xwad.os.bean.HomeworkBean;
+import com.xwad.os.bean.uiuios.AppUpdateInfo;
import com.xwad.os.gson.GsonUtils;
-import com.xwad.os.mdm.AdminManager;
+import com.xwad.os.service.DownloadService;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
+import java.lang.reflect.Type;
import java.math.BigInteger;
import java.security.MessageDigest;
import java.util.HashSet;
-public class FileUtil {
+public class FileUtils {
private static final String TAG = "FileUtil";
public static String getFileType(String url) {
@@ -245,6 +251,15 @@ public class FileUtil {
ariaDownload(context, url, ariaDownloadInfo);
}
+ public static void ariaDownload(Context context, String url, JsonObject jsonObject) {
+ Log.e(TAG, "ariaDownload: " + jsonObject);
+ Gson gson = new Gson();
+ Type type = new TypeToken() {
+ }.getType();
+ AriaDownloadInfo ariaDownloadInfo = gson.fromJson(jsonObject, type);
+ ariaDownload(context, url, ariaDownloadInfo);
+ }
+
public static void ariaDownload(Context context, String url, AriaDownloadInfo ariaDownloadInfo) {
Log.e(TAG, "ariaDownload: " + ariaDownloadInfo);
String fileName = getFileNamefromURL(url);
@@ -273,6 +288,12 @@ public class FileUtil {
.setExtendField(GsonUtils.toJSONString(ariaDownloadInfo))
.create(); //启动下载}
}
+ Intent intent = new Intent(context, DownloadService.class);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
+ context.startForegroundService(intent);
+ } else {
+ context.startService(intent);
+ }
}
public static void ariaDownloadTestPaper(Context context, String url, HomeworkBean homeworkBean) {
diff --git a/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java b/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java
index 22643c6..52de4ff 100644
--- a/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java
+++ b/app/src/main/java/com/xwad/os/utils/OpenApkUtils.java
@@ -912,7 +912,7 @@ public class OpenApkUtils {
Log.e("getAppInfo", "onNext: " + baseResponse);
if (baseResponse.code == 200) {
AppInfo appInfo = baseResponse.data;
- FileUtil.ariaDownload(mContext, appInfo.getApp_url(), appInfo);
+ FileUtils.ariaDownload(mContext, appInfo.getApp_url(), appInfo);
} else {
Toaster.showLong("没有找到应用信息,请联系客服");
}