version:1.1.3

fix:
update:修改其他应用获取sn,优化登录后获取设置,增加荣耀应用信息上传
This commit is contained in:
2026-01-26 10:11:55 +08:00
parent 832acf2714
commit f4cdb38baa
44 changed files with 764 additions and 140 deletions

View File

@@ -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"

View File

@@ -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 @@
<activity
android:name=".activity.debug.DebugActivity"
android:launchMode="singleTask"
android:theme="@style/AppWhiteThemeWithoutFitsSystemWindows"
android:screenOrientation="landscape" />
android:screenOrientation="landscape"
android:theme="@style/AppWhiteThemeWithoutFitsSystemWindows" />
<activity
android:name=".eula.LicenseActivity"
android:exported="false" />
@@ -361,6 +361,11 @@
android:enabled="true"
android:exported="true" />
<service
android:name=".service.RemoteService"
android:enabled="true"
android:exported="true" />
<receiver
android:name=".receiver.InstallResultReceiver"
android:enabled="true"

View File

@@ -1,5 +1,5 @@
// IGetInfoInterface.aidl
package com.uiui.zy;
package com.xwad.os;
// Declare any non-default types here with import statements

View File

@@ -1,5 +1,5 @@
// KeepAliveConnection.aidl
package com.uiui.zy;
package com.xwad.os;
// Declare any non-default types here with import statements

View File

@@ -10,7 +10,6 @@ import android.media.SoundPool;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
@@ -19,6 +18,7 @@ import android.view.inputmethod.InputMethodManager;
import androidx.databinding.DataBindingUtil;
import com.tencent.mmkv.MMKV;
import com.tuo.customview.VerificationCodeView;
import com.xwad.os.BuildConfig;
import com.xwad.os.R;
@@ -36,6 +36,8 @@ import java.util.stream.Collectors;
public class ExitActivity extends BaseDataBindingActivity {
private static final String TAG = "ExitActivity";
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private ActivityExitBinding mBinding;
private SoundPool soundPool;
@@ -119,7 +121,7 @@ public class ExitActivity extends BaseDataBindingActivity {
return;
}
Log.e(TAG, "inputComplete: " + content);
String password = Settings.Global.getString(getContentResolver(), CommonConfig.LOCK_SCREEN_PASSWORD);
String password = mMMKV.decodeString(CommonConfig.LOCK_SCREEN_PASSWORD, CommonConfig.DEFAULT_PASSWORD);
if ((!TextUtils.isEmpty(content) && !TextUtils.isEmpty(password))) {
if (password.equals(content)) {
// Utils.exitDesktop(this);

View File

@@ -12,7 +12,6 @@ import android.view.View;
import androidx.databinding.DataBindingUtil;
import com.blankj.utilcode.util.FileUtils;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestOptions;
@@ -23,7 +22,7 @@ import com.xwad.os.bean.AlarmClockData;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.databinding.ActivityNoticeBinding;
import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.utils.FileUtil;
import com.xwad.os.utils.FileUtils;
import com.xwad.os.utils.ScreenUtils;
import com.xwad.os.utils.Utils;
import com.xwad.os.utils.WakeUpUtils;
@@ -139,7 +138,7 @@ public class NoticeActivity extends BaseDataBindingActivity {
mBinding.clVoice.setVisibility(View.VISIBLE);
String fileName = Utils.getFileNamefromURL(voiceUrl);
File file = new File(Utils.getDownLoadPath(NoticeActivity.this) + fileName);
String fileMD5 = FileUtils.getFileMD5ToString(file);
String fileMD5 = com.blankj.utilcode.util.FileUtils.getFileMD5ToString(file);
// if (!md5.equals(fileMD5)) {
// // TODO: 2021/12/16
// } else {
@@ -165,14 +164,14 @@ public class NoticeActivity extends BaseDataBindingActivity {
}
if (!TextUtils.isEmpty(filePath)) {
mBinding.clVp.setVisibility(View.VISIBLE);
String fileType = FileUtil.getFileType(filePath);
String fileType = FileUtils.getFileType(filePath);
Log.e(TAG, "showData: " + fileType);
if (FileUtil.isPictureFile(fileType)) {
if (FileUtils.isPictureFile(fileType)) {
mBinding.jzVideo.setVisibility(View.GONE);
mBinding.ivDictation.setVisibility(View.VISIBLE);
RequestOptions options = new RequestOptions().transform(new RoundedCorners(ScreenUtils.dip2px(this, 16F)));
Glide.with(NoticeActivity.this).load(filePath).apply(options).into(mBinding.ivDictation);
} else if (FileUtil.isVideoFile(fileType)) {
} else if (FileUtils.isVideoFile(fileType)) {
mBinding.jzVideo.setVisibility(View.VISIBLE);
mBinding.ivDictation.setVisibility(View.GONE);
String fileName = filePath.substring(filePath.lastIndexOf("/") + 1, filePath.length());

View File

@@ -5,7 +5,6 @@ import android.content.Intent;
import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
@@ -14,6 +13,7 @@ import android.view.inputmethod.InputMethodManager;
import androidx.databinding.DataBindingUtil;
import com.tencent.mmkv.MMKV;
import com.tuo.customview.VerificationCodeView;
import com.xwad.os.R;
import com.xwad.os.activity.addicon.AddIconActivity;
@@ -25,6 +25,8 @@ import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX;
public class PasswordActivity extends BaseDataBindingActivity {
private static final String TAG = "PasswordActivity";
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
private ActivityPasswdBinding mBinding;
// @Override
@@ -134,7 +136,7 @@ public class PasswordActivity extends BaseDataBindingActivity {
return;
}
Log.e(TAG, "inputComplete: " + content);
String password = Settings.Global.getString(getContentResolver(), CommonConfig.LOCK_SCREEN_PASSWORD);
String password = mMMKV.decodeString(CommonConfig.LOCK_SCREEN_PASSWORD, CommonConfig.DEFAULT_PASSWORD);
if ((!TextUtils.isEmpty(content) && !TextUtils.isEmpty(password))) {
if (password.equals(content)) {
startActivity(new Intent(PasswordActivity.this, AddIconActivity.class));

View File

@@ -46,6 +46,7 @@ import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.PhraseContent;
import com.xwad.os.bean.UserInfo;
import com.xwad.os.bean.jxw.TabBean;
import com.xwad.os.bean.uiuios.AppUpdateInfo;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.databinding.ActivityHomeBinding;
import com.xwad.os.dialog.DeactivateDialog;
@@ -69,6 +70,7 @@ import com.xwad.os.jxw.event.UpdateColorEvent;
import com.xwad.os.jxw.event.UpdateGradeEvent;
import com.xwad.os.jxw.fragment.SztzFragment;
import com.xwad.os.jxw.util.Util;
import com.xwad.os.manager.AmapManager;
import com.xwad.os.mdm.AdminManager;
import com.xwad.os.permission.PermissionUtils;
import com.xwad.os.receiver.AoleDeviceAdminReceiver;
@@ -107,6 +109,13 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
this.add(BuildConfig.APPLICATION_ID);
}};
/*只能加servicecenter*/
public static final ArrayList<String> honorSystemApp = new ArrayList<String>() {{
this.add("com.hihonor.servicecenter");
// this.add("com.hihonor.parentcontrol");
// this.add("com.hihonor.android.launcher");
}};
private ArrayList<String> mPersistentApp = new ArrayList<String>() {{
this.add(BuildConfig.APPLICATION_ID);
this.add("com.jxw.launcher");
@@ -215,13 +224,13 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
public void initData() {
mViewModel.mAppUpdateInfoData.observe(this, new Observer<AppInfo>() {
@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<HomeViewModel, ActivityHomeBi
}
}
});
// mViewModel.checkUpdate();
mViewModel.checkUpdate();
mViewModel.mAppUpdateInfoUiUiOSData.observe(this, new Observer<AppUpdateInfo>() {
@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<Boolean>() {
@Override
public void onChanged(Boolean aBoolean) {
@@ -261,8 +289,8 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
mViewModel.getPhrase();
mViewModel.getSystemSettings();
mViewModel.getOauthToken();
mViewModel.getAnswerControlStatus();
// mViewModel.getOauthToken();
// mViewModel.getAnswerControlStatus();
mViewModel.getPublicIp();
}
@@ -543,10 +571,8 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
// AdminManager.getInstance().setRestoreFactoryDisabled(true);
AdminManager.getInstance().setDefaultLauncher("com.xwad.os", "com.xwad.os.activity.home.HomeActivity");
AdminManager.getInstance().addIgnoreFrequentRelaunchAppList("com.xwad.os");
// TODO: 2026/1/24 只能加这个包名,其他加不进去
AdminManager.getInstance().addDisallowedRunningApp("com.hihonor.servicecenter");
AdminManager.getInstance().addDisallowedRunningApp("com.hihonor.parentcontrol");
AdminManager.getInstance().addDisallowedRunningApp("com.hihonor.android.launcher");
// AdminManager.getInstance().setStatusBarExpandPanelDisabled(true);
AdminManager.getInstance().setQuickToolsDisabled(true);
Log.e(TAG, "setDefault: time = " + (System.currentTimeMillis() - time) + "ms");
@@ -774,12 +800,12 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
}
private void setDefaultDesktop() {
// boolean is_activation = AdminManager.getInstance().getSnIsActivation();
// if (is_activation) {
// AdminManager.getInstance().setDefaultLauncher(BuildConfig.APPLICATION_ID);
// } else {
//// AdminManager.getInstance().setDefaultDesktop(ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME);
// }
if (!JgyUtils.getInstance().isDefaultLauncher("com.xwad.os", "com.xwad.os.activity.home.HomeActivity")) {
Log.e(TAG, "setDefaultDesktop: ");
AdminManager.getInstance().setDefaultLauncher("com.xwad.os", "com.xwad.os.activity.home.HomeActivity");
} else {
Log.e(TAG, "setDefaultDesktop: isDefaultLauncher");
}
}
@@ -863,7 +889,7 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
// getPermissions();
// }
// }
// setDefaultDesktop();
setDefaultDesktop();
}
@Override
@@ -909,12 +935,67 @@ public class HomeActivity extends BaseMvvmActivity<HomeViewModel, ActivityHomeBi
registTimeReceiver();
registBateeryReceiver();
registerRefreshReceiver();
registmUpdateAddressReceiver();
registmNewAppReceiver();
}
private void unregisterReceivers() {
unRegistTimeReceiver();
unregistBateeryReceiver();
unregisterRefreshReceiver();
if (mUpdateAddressReceiver != null) {
unregisterReceiver(mUpdateAddressReceiver);
}
if (mNewAppReceiver != null) {
unregisterReceiver(mNewAppReceiver);
}
}
private void registmNewAppReceiver() {
mNewAppReceiver = new NewAppReceiver();
IntentFilter filter = new IntentFilter();
filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY);
filter.addAction(Intent.ACTION_PACKAGE_ADDED);
// filter.addAction(Intent.ACTION_PACKAGE_CHANGED);
filter.addAction(Intent.ACTION_PACKAGE_REPLACED);
filter.addAction(Intent.ACTION_PACKAGE_REMOVED);
filter.addDataScheme("package");
registerReceiver(mNewAppReceiver, filter);
}
private NewAppReceiver mNewAppReceiver;
class NewAppReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG, "onReceive: " + action);
if (Intent.ACTION_PACKAGE_ADDED.equals(action) || Intent.ACTION_PACKAGE_REMOVED.equals(action)
// || Intent.ACTION_PACKAGE_CHANGED.equals(action)
) {
// NetInterfaceManager.getInstance().updateAdminInfo();
// NetInterfaceManager.getInstance().SendAppInstallInfo();
}
}
}
private void registmUpdateAddressReceiver() {
mUpdateAddressReceiver = new UpdateAddressReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(CommonConfig.IFLYTEK_UPDATE_ADDRESS_ACTION);
registerReceiver(mUpdateAddressReceiver, filter);
}
private UpdateAddressReceiver mUpdateAddressReceiver;
class UpdateAddressReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (CommonConfig.IFLYTEK_UPDATE_ADDRESS_ACTION.equals(action)) {
AmapManager.getInstance().startLocation();
}
}
}
//时间

View File

@@ -10,22 +10,20 @@ import com.hjq.toast.Toaster;
import com.tencent.mmkv.MMKV;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.xwad.os.BuildConfig;
import com.xwad.os.R;
import com.xwad.os.base.mvvm.BaseViewModel;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.bean.CodeBean;
import com.xwad.os.bean.PhraseContent;
import com.xwad.os.bean.SnInfo;
import com.xwad.os.bean.SystemSettings;
import com.xwad.os.bean.UserInfo;
import com.xwad.os.bean.uiuios.AppUpdateInfo;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.databinding.ActivityHomeBinding;
import com.xwad.os.jxw.SPUtils;
import com.xwad.os.manager.DeviceSNManager;
import com.xwad.os.mdm.AdminManager;
import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.utils.ActivationUtil;
@@ -165,6 +163,41 @@ public class HomeViewModel extends BaseViewModel<ActivityHomeBinding, ActivityEv
});
}
public MutableLiveData<AppUpdateInfo> mAppUpdateInfoUiUiOSData = new MutableLiveData<>();
public void checkUpdateUiUiOS(String pkg) {
NetInterfaceManager.getInstance().getCheckUpdateObservable(pkg)
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<AppUpdateInfo>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("checkUpdate", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<AppUpdateInfo> 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();

View File

@@ -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<LoginViewModel, ActivityLogi
public void onChanged(LoginInfo loginInfo) {
Toaster.show("登录成功");
startService(new Intent(LoginActivity.this, SocketService.class).setAction(SocketService.LOGIN_SUCCESSFUL));
startService(new Intent(LoginActivity.this, MainService.class).setAction(SocketService.LOGIN_SUCCESSFUL));
Intent intent = new Intent();
setResult(Activity.RESULT_OK, intent);

View File

@@ -14,13 +14,11 @@ import com.xwad.os.BuildConfig;
import com.xwad.os.R;
import com.xwad.os.base.mvvm.BaseViewModel;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.bean.SnInfo;
import com.xwad.os.bean.SystemSettings;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.databinding.ActivityMainBinding;
import com.xwad.os.manager.DeviceSNManager;
import com.xwad.os.mdm.AdminManager;
import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.utils.ActivationUtil;

View File

@@ -10,7 +10,6 @@ import com.hjq.toast.Toaster;
import com.xwad.os.R;
import com.xwad.os.base.mvvm.BaseMvvmActivity;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.databinding.ActivityUpdateBinding;
import com.xwad.os.service.DownloadService;
import com.xwad.os.utils.ApkUtils;

View File

@@ -24,7 +24,6 @@ import com.luck.picture.lib.interfaces.OnResultCallbackListener;
import com.tencent.mmkv.MMKV;
import com.xwad.os.BuildConfig;
import com.xwad.os.R;
import com.xwad.os.activity.ExitActivity;
import com.xwad.os.activity.debug.DebugActivity;
import com.xwad.os.activity.edit.EditActivity;
import com.xwad.os.activity.permission.PermissionActivity;
@@ -33,7 +32,6 @@ import com.xwad.os.activity.update.UpdateActivity;
import com.xwad.os.base.BaseAlertDialogBuilder;
import com.xwad.os.base.mvvm.BaseMvvmActivity;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.UserAvatarInfo;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.custom.GlideEngine;
@@ -43,15 +41,13 @@ import com.xwad.os.fragment.usercenter.account.AccountFragment;
import com.xwad.os.fragment.usercenter.device.DeviceFragment;
import com.xwad.os.fragment.usercenter.info.InfoFragment;
import com.xwad.os.fragment.usercenter.parents.ParentsFragment;
import com.xwad.os.manager.DeviceSNManager;
import com.xwad.os.mdm.AdminManager;
import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.utils.ActivationUtil;
import com.xwad.os.utils.ApkUtils;
import com.xwad.os.utils.FileUtil;
import com.xwad.os.utils.FileUtils;
import com.xwad.os.utils.GlideLoadUtils;
import com.xwad.os.utils.ScreenUtils;
import com.xwad.os.utils.Utils;
import java.io.File;
import java.util.ArrayList;
@@ -348,10 +344,10 @@ public class UserActivity extends BaseMvvmActivity<UserViewModel, ActivityUserBi
if (ActivationUtil.getInstance().isLogin()) {
File avatarFile;
if (TextUtils.isEmpty(avatarFilePath)) {
avatarFile = FileUtil.drawableToFile(UserActivity.this, R.drawable.default_avatar, "avatar");
avatarFile = FileUtils.drawableToFile(UserActivity.this, R.drawable.default_avatar, "avatar");
} else {
Uri uri = Uri.parse(avatarFilePath);
avatarFile = FileUtil.uriToFile(uri, UserActivity.this);
avatarFile = FileUtils.uriToFile(uri, UserActivity.this);
// avatarFile = new File(avatarFilePath);
}
MediaType mediaType = MediaType.Companion.parse("image/png");

View File

@@ -10,7 +10,6 @@ import com.trello.rxlifecycle4.android.ActivityEvent;
import com.xwad.os.BuildConfig;
import com.xwad.os.base.mvvm.BaseViewModel;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.bean.UserAvatarInfo;
import com.xwad.os.databinding.ActivityUserBinding;

View File

@@ -17,11 +17,11 @@ import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target;
import com.xwad.os.R;
import com.xwad.os.utils.FileUtil;
import com.xwad.os.utils.GlideLoadUtils;
import com.wgw.photo.preview.PhotoPreview;
import com.wgw.photo.preview.interfaces.ImageLoader;
import com.xwad.os.R;
import com.xwad.os.utils.FileUtils;
import com.xwad.os.utils.GlideLoadUtils;
import java.io.File;
import java.util.List;
@@ -48,7 +48,7 @@ public class HomeworkDetailPicAdapter extends RecyclerView.Adapter<HomeworkDetai
public void onBindViewHolder(@NonNull Holder holder, int position) {
String url = mUrls.get(position);
GlideLoadUtils.getInstance().glideLoadSetSize(mContext, url, holder.nv_pic, R.mipmap.ic_launcher);
File file = new File(FileUtil.getDownLoadPath(mContext) + FileUtil.getFileNamefromURL(url));
File file = new File(FileUtils.getDownLoadPath(mContext) + FileUtils.getFileNamefromURL(url));
if (file.exists()) {
holder.iv_download.setVisibility(View.GONE);
holder.nv_pic.setOnClickListener(new View.OnClickListener() {
@@ -83,7 +83,7 @@ public class HomeworkDetailPicAdapter extends RecyclerView.Adapter<HomeworkDetai
holder.iv_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FileUtil.ariaDownloadUrl(mContext, url);
FileUtils.ariaDownloadUrl(mContext, url);
notifyDataSetChanged();
}
});

View File

@@ -17,13 +17,13 @@ import com.bumptech.glide.load.DecodeFormat;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target;
import com.xwad.os.R;
import com.xwad.os.bean.HomeworkBean;
import com.xwad.os.utils.FileUtil;
import com.xwad.os.utils.GlideLoadUtils;
import com.xwad.os.utils.OpenFileUtil;
import com.wgw.photo.preview.PhotoPreview;
import com.wgw.photo.preview.interfaces.ImageLoader;
import com.xwad.os.R;
import com.xwad.os.bean.HomeworkBean;
import com.xwad.os.utils.FileUtils;
import com.xwad.os.utils.GlideLoadUtils;
import com.xwad.os.utils.OpenFileUtil;
import java.io.File;
import java.util.List;
@@ -50,7 +50,7 @@ public class HomeworkDetailPicAdapter2 extends RecyclerView.Adapter<HomeworkDeta
public void onBindViewHolder(@NonNull Holder holder, int position) {
List<String> 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<HomeworkDeta
holder.iv_download.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
FileUtil.ariaDownloadUrl(mContext, url);
FileUtils.ariaDownloadUrl(mContext, url);
}
});
} else {
FileUtil.ariaDownloadUrl(mContext, url);
FileUtils.ariaDownloadUrl(mContext, url);
}
}

View File

@@ -13,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.shehuan.niv.NiceImageView;
import com.xwad.os.R;
import com.xwad.os.activity.homework.HomeworkDetailsActivity;
import com.xwad.os.utils.FileUtil;
import com.xwad.os.utils.FileUtils;
import com.xwad.os.utils.GlideLoadUtils;
import java.io.File;
@@ -45,7 +45,7 @@ public class HomeworkPicAdapter extends RecyclerView.Adapter<HomeworkPicAdapter.
@Override
public void onBindViewHolder(@NonNull Holder holder, int position) {
String url = mUrls.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().glideLoad(mContext, file, holder.nv_pic, R.drawable.icon_no_homework);
} else {

View File

@@ -12,11 +12,10 @@ import android.text.TextUtils;
import android.util.Log;
import com.arialyy.aria.core.Aria;
import com.blankj.utilcode.util.FileUtils;
import com.bumptech.glide.Glide;
import com.xwad.os.bean.AlarmClockData;
import com.xwad.os.service.main.MainService;
import com.xwad.os.utils.FileUtil;
import com.xwad.os.utils.FileUtils;
import com.xwad.os.utils.Utils;
import java.io.File;
@@ -290,7 +289,7 @@ public class AlarmUtils {
return;
}
String fileName = url.substring(url.lastIndexOf("/") + 1, url.length());
if (FileUtil.isVideoFile(fileName)) {
if (FileUtils.isVideoFile(fileName)) {
String realPath = Utils.getDownLoadPath(mContext) + fileName;
File file = new File(realPath);
if (!file.exists()) {
@@ -300,7 +299,7 @@ public class AlarmUtils {
// .ignoreFilePathOccupy()
.create(); //启动下载}
}
}else if (FileUtil.isPictureFile(fileName)){
} else if (FileUtils.isPictureFile(fileName)) {
Glide.with(mContext).load(url);
}
}
@@ -645,7 +644,7 @@ public class AlarmUtils {
String fileName = Utils.getFileNamefromURL(url);
File file = new File(Utils.getDownLoadPath(mContext) + fileName);
if (file.exists() && !file.isDirectory()) {
String fileMD5 = FileUtils.getFileMD5ToString(file);
String fileMD5 = com.blankj.utilcode.util.FileUtils.getFileMD5ToString(file);
Log.e("ariaDownload", "fileOnlineMD5=" + md5);
Log.e("ariaDownload", "fileMD5=" + fileMD5);
if (!md5.equals(fileMD5)) {

View File

@@ -0,0 +1,26 @@
package com.xwad.os.bean;
import java.io.Serializable;
public class AppIcon implements Serializable {
private static final long serialVersionUID = 7467515502468519705L;
int id;
String app_package;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getApp_package() {
return app_package;
}
public void setApp_package(String app_package) {
this.app_package = app_package;
}
}

View File

@@ -4,7 +4,6 @@ import androidx.annotation.NonNull;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
@@ -18,7 +17,7 @@ public class AppInfo implements Serializable {
private long app_size;
private String app_package;
private String app_version_name;
private int app_version_code;
private long app_version_code;
private String app_md5;
private int app_score;
private String app_preview1;
@@ -90,11 +89,11 @@ public class AppInfo implements Serializable {
this.app_version_name = app_version_name;
}
public int getApp_version_code() {
public long getApp_version_code() {
return app_version_code;
}
public void setApp_version_code(int app_version_code) {
public void setApp_version_code(long app_version_code) {
this.app_version_code = app_version_code;
}

View File

@@ -4,20 +4,31 @@ import androidx.annotation.NonNull;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import com.google.gson.annotations.SerializedName;
import com.xwad.os.bean.uiuios.AppUpdateInfo;
import java.io.Serializable;
public class AriaDownloadInfo implements Serializable {
private static final long serialVersionUID = -2835281454196323431L;
@SerializedName(value = "appId", alternate = {"app_id"})
int appId;
@SerializedName(value = "appName", alternate = {"app_name"})
String appName;
@SerializedName(value = "appPackage", alternate = {"app_package", "package"})
String appPackage;
@SerializedName(value = "appVersionName", alternate = {"app_version_name"})
String appVersionName;
@SerializedName(value = "appVersionCode", alternate = {"app_version_code"})
long appVersionCode;
@SerializedName(value = "appUrl", alternate = {"app_url", "url"})
String appUrl;
@SerializedName(value = "appIcon", alternate = {"app_img"})
String appIcon;
@SerializedName(value = "appSize", alternate = {"app_size"})
long appSize;
@SerializedName(value = "appMd5", alternate = {"app_md5"})
String appMd5;
public AriaDownloadInfo(int appId, String appName, String appPackage, String appVersionName, long appVersionCode, String appUrl, String appIcon, long appSize, String appMd5) {

View File

@@ -76,6 +76,7 @@ public class SystemSettings implements Serializable {
int ai_teacher;
int photo_search_questions;
int ai_question_test;
int sys_voice_assistant;
public int getSetting_call() {
return setting_call;
@@ -573,6 +574,14 @@ public class SystemSettings implements Serializable {
this.ai_question_test = ai_question_test;
}
public int getSys_voice_assistant() {
return sys_voice_assistant;
}
public void setSys_voice_assistant(int sys_voice_assistant) {
this.sys_voice_assistant = sys_voice_assistant;
}
@NotNull
@Override
public String toString() {

View File

@@ -1,4 +1,4 @@
package com.xwad.os.bean;
package com.xwad.os.bean.uiuios;
import androidx.annotation.NonNull;

View File

@@ -1,4 +1,4 @@
package com.xwad.os.bean;
package com.xwad.os.bean.uiuios;
import androidx.annotation.NonNull;

View File

@@ -54,6 +54,11 @@ public class CommonConfig {
/*是否显示返回Android按钮*/
public static final String UIUI_RETURN_ANDROID_KEY = "iflytek_uiui_is_return_android";
public static final String APP_ICON_HIND_SET_KEY = "AppIconHindSet";
/*让桌面更新定位信息*/
public static final String IFLYTEK_UPDATE_ADDRESS_ACTION = "IFLYTEK_UPDATE_ADDRESS";
@@ -146,4 +151,5 @@ public class CommonConfig {
public final static String AOLE_ACTION_APP_FORBID_ID = "aole_app_forbid_id";
/*应用ID管控*/
public final static String AOLE_ACTION_APP_FORBID_ARRAY = "DeselectViewArray";
}

View File

@@ -15,7 +15,7 @@ import com.xwad.os.bean.UserInfo;
import com.xwad.os.config.CommonConfig;
import com.xwad.os.databinding.FragmentAccountBinding;
import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.utils.FileUtil;
import com.xwad.os.utils.FileUtils;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
@@ -83,7 +83,7 @@ public class AccountViewModel extends BaseViewModel<FragmentAccountBinding, Frag
Log.e("getAppInfo", "onNext: " + baseResponse);
if (baseResponse.code == 200) {
AppInfo appInfo = baseResponse.data;
FileUtil.ariaDownload(getCtx(), appInfo.getApp_url(), appInfo);
FileUtils.ariaDownload(getCtx(), appInfo.getApp_url(), appInfo);
} else {
Toaster.showLong("没有找到应用信息,请联系客服");
}

View File

@@ -16,9 +16,7 @@ import com.xwad.os.activity.service.ServiceActivity;
import com.xwad.os.activity.update.UpdateActivity;
import com.xwad.os.base.mvvm.fragment.BaseMvvmFragment;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.databinding.FragmentDeviceBinding;
import com.xwad.os.manager.DeviceSNManager;
import com.xwad.os.mdm.AdminManager;
import com.xwad.os.utils.ApkUtils;
@@ -70,7 +68,7 @@ public class DeviceFragment extends BaseMvvmFragment<DeviceViewModel, FragmentDe
}
}
});
mViewModel.checkUpdate();
mViewModel.checkUpdate(BuildConfig.APPLICATION_ID);
}
@@ -89,7 +87,7 @@ public class DeviceFragment extends BaseMvvmFragment<DeviceViewModel, FragmentDe
}
public void checkUpdate(View view) {
mViewModel.checkUpdate();
mViewModel.checkUpdate(BuildConfig.APPLICATION_ID);
}
}
}

View File

@@ -4,17 +4,14 @@ import android.util.Log;
import androidx.lifecycle.MutableLiveData;
import com.hjq.toast.Toaster;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.trello.rxlifecycle4.android.FragmentEvent;
import com.xwad.os.BuildConfig;
import com.xwad.os.base.mvvm.BaseViewModel;
import com.xwad.os.bean.AppInfo;
import com.xwad.os.bean.AppUpdateInfo;
import com.xwad.os.bean.BaseResponse;
import com.xwad.os.databinding.FragmentDeviceBinding;
import com.xwad.os.network.NetInterfaceManager;
import com.xwad.os.utils.ApkUtils;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
@@ -34,8 +31,8 @@ public class DeviceViewModel extends BaseViewModel<FragmentDeviceBinding, Fragme
public MutableLiveData<AppInfo> 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<BaseResponse<AppInfo>>() {
@Override
@@ -66,4 +63,39 @@ public class DeviceViewModel extends BaseViewModel<FragmentDeviceBinding, Fragme
}
});
}
public void checkStoreUpdate(String pkg) {
NetInterfaceManager.getInstance().getUpdateObservable(pkg)
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), FragmentEvent.DESTROY))
.subscribe(new Observer<BaseResponse<AppInfo>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("checkStoreUpdate", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<AppInfo> 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: ");
}
});
}
}

View File

@@ -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");
}
}

View File

@@ -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<String> 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<String> packageNames) {
if (packageNames == null || packageNames.size() == 0) return;
if (packageNames == null || packageNames.isEmpty()) return;
Log.e(TAG, "addDisallowedRunningApp: packageNames = " + packageNames);
List<String> 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<String>() {
@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<String> packageList = getDisallowedRunningApp();
// List<String> packageList = new ArrayList<>();
Log.e(TAG, "addDisallowedRunningApp: packageList = " + packageList);
@@ -409,8 +434,19 @@ public class AdminManager {
* @param packageNames
*/
public void removeDisallowedRunningApp(List<String> packageNames) {
Log.e(TAG, "removeDisallowedRunningApp: " + packageNames);
if (packageNames == null || packageNames.size() == 0) return;
mDeviceApplicationManager.removeDisallowedRunningApp(mAdminName, packageNames);
List<String> pkgs = packageNames.stream().filter(new Predicate<String>() {
@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<String> defaultAllowInstallPackages = new HashSet<String>() {{
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<String> 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) {

View File

@@ -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<BaseResponse<List<AppIcon>>> getAppIconObservable() {
return mRetrofit.create(GetAppIconApi.class)
.getAppIcon(Utils.getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse> getOauthTokenObservable() {
Map<String, String> 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<ResolveInfo> appsWithLauncher = pm.queryIntentActivities(intent, 0);
Log.e("SendAppInstallInfo", "appsWithLauncher: " + appsWithLauncher);
List<String> 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<ActivityEvent> lifecycle, AppIconCallback callback) {
getAppIconObservable()
.compose(RxLifecycle.bindUntilEvent(lifecycle, ActivityEvent.DESTROY))
.subscribe(getAppIconObserver(callback));
}
public Observer<BaseResponse<List<AppIcon>>> getAppIconObserver(AppIconCallback callback) {
return new Observer<BaseResponse<List<AppIcon>>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getAppIcon", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<List<AppIcon>> baseResponse) {
Log.e("getAppIcon", "onNext: " + baseResponse);
if (baseResponse.code == 200) {
List<AppIcon> appIconList = baseResponse.data;
Set<String> pkgList = appIconList.stream().map(new java.util.function.Function<AppIcon, String>() {
@Override
public String apply(AppIcon appIcon) {
return appIcon.getApp_package();
}
}).collect(Collectors.toSet());
Set<String> 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<String> 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();
}
};
}
}

View File

@@ -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

View File

@@ -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<BaseResponse<List<AppIcon>>> getAppIcon(
@Query("sn") String sn
);
}

View File

@@ -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;

View File

@@ -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");

View File

@@ -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<String> emitter) -> newAppListener = emitter::onNext)
.throttleLast(1, TimeUnit.MINUTES)
.subscribe(new Observer<String>() {
@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: ");
}
});
}
}

View File

@@ -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);

View File

@@ -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();
}
};
}

View File

@@ -153,6 +153,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat
initOnlineSocketClient();
initSsoSocketClient();
initPush();
NetInterfaceManager.getInstance().getSystemSettings();
break;
default:
}

View File

@@ -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();
}
});
}

View File

@@ -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)

View File

@@ -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已经是最新版");
}

View File

@@ -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<AriaDownloadInfo>() {
}.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) {

View File

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