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("没有找到应用信息,请联系客服"); }