version:2.0.8

bugfixes:
update:更滑图标,增加获取系统设置
This commit is contained in:
2025-09-08 18:19:15 +08:00
parent 7ba6544143
commit 8229219fc1
41 changed files with 1066 additions and 181 deletions

View File

@@ -16,8 +16,8 @@ android {
minSdkVersion 24
targetSdkVersion 29
versionCode 94
versionName "2.0.3"
versionCode 99
versionName "2.0.8"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables.useSupportLibrary = true

View File

@@ -157,7 +157,7 @@
android:launchMode="singleTask"
android:screenOrientation="landscape" />
<activity
android:name=".activity.ServiceActivity"
android:name=".activity.service.ServiceActivity"
android:launchMode="singleTask"
android:screenOrientation="landscape"
android:theme="@style/DialogCloseOnTouchOutside" />

View File

@@ -13,16 +13,26 @@ interface IGetInfoInterface {
//获取sn
String getSerial();
//获取定位结果
String getMapResult();
//获取mac作为sn
String getPushMac();
//是否激活
boolean SnIsActivation();
//设置为默认桌面
//获取激活码
String getActivationCode();
//设置为默认桌面
void setDefaultLauncher(String pkg);
//退出桌面
void exitDesktop();
//能否退出桌面
boolean isReturnAndroid();
//模拟返回键
void keyBack();
//获取定位结果
String getMapResult();
//获取应用使用时长
String getAppUsedStatistics();
//使用第三方应用
boolean showThirdApp();
//获取应用市场app
List<String> getAdminApp();
//写入系统数据

View File

@@ -1,25 +0,0 @@
package com.uiui.zyos.activity;
import androidx.databinding.DataBindingUtil;
import com.uiui.zyos.R;
import com.uiui.zyos.base.BaseDataBindingActivity;
import com.uiui.zyos.base.mvp.BaseMvpActivity;
public class ServiceActivity extends BaseDataBindingActivity {
@Override
protected void initDataBinding() {
DataBindingUtil.setContentView(this, R.layout.activity_wechat);
}
@Override
public void initView() {
}
@Override
public void initData() {
}
}

View File

@@ -16,10 +16,12 @@ import android.view.KeyEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Toast;
import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.lifecycle.Observer;
import androidx.viewpager.widget.ViewPager;
import com.hjq.permissions.OnPermissionCallback;
@@ -33,8 +35,10 @@ import com.uiui.zyos.activity.ExitActivity;
import com.uiui.zyos.activity.permission.PermissionActivity;
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
import com.uiui.zyos.bean.AppUpdateInfo;
import com.uiui.zyos.bean.SystemSettings;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.databinding.ActivityMainBinding;
import com.uiui.zyos.dialog.PermissionsDialog;
import com.uiui.zyos.dialog.PrivacyPolicyDialog;
import com.uiui.zyos.fragment.subject.SubjectFragment;
import com.uiui.zyos.fragment.user.UserFragment;
@@ -73,6 +77,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
@Override
public void onRemoteConnected() {
Log.e(TAG, "onConnected: ");
mViewModel.getSystemSettings();
setDefaultDesktop();
}
@@ -93,7 +98,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
public void initView() {
Log.e(TAG, "initView: ");
mViewDataBinding.ivIcon2.setImageDrawable(ApkUtils.getAppDrawable(MainActivity.this, "com.uiui.zy", R.drawable.com_uiui_sn));
// mViewDataBinding.ivIcon2.setImageDrawable(ApkUtils.getAppDrawable(MainActivity.this, "com.uiui.zy", R.drawable.com_uiui_sn));
mViewDataBinding.tvAppname2.setText(ApkUtils.getAppName(MainActivity.this, "com.uiui.zy", "设备守护"));
// OpenApkUtils.getInstance().openWordLecture();
@@ -229,6 +234,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
public void initData() {
registmNewAppReceiver();
registmUpdateAddressReceiver();
registVoiceAssistantReceiver();
// mViewModel.mAppUpdateInfoData.observe(this, new Observer<AppUpdateInfo>() {
// @Override
// public void onChanged(AppUpdateInfo appUpdateInfo) {
@@ -249,6 +255,14 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
// });
// mViewModel.checkUpdate();
mViewModel.getSnInfo();
mViewModel.mSystemSettingsMutableLiveData.observe(this, new Observer<SystemSettings>() {
@Override
public void onChanged(SystemSettings systemSettings) {
int voice_assistant = systemSettings.getVoice_assistant();
mViewDataBinding.ivRobot.setVisibility(voice_assistant == 1 ? View.VISIBLE : View.GONE);
}
});
}
private void hideSystemUI() {
@@ -266,11 +280,11 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
}
private void setDefaultDesktop() {
int is_activation = Settings.Global.getInt(getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
if (is_activation == 0) {
RemoteManager.getInstance().setDefaultDesktop(ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME);
} else {
boolean is_activation = RemoteManager.getInstance().getSnIsActivation();
if (is_activation) {
RemoteManager.getInstance().setDefaultDesktop(BuildConfig.APPLICATION_ID);
} else {
// RemoteManager.getInstance().setDefaultDesktop(ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME);
}
}
@@ -353,7 +367,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
if (checkPermission()) {
Log.e(TAG, "onResume: all permission granted");
} else {
startActivity(new Intent(MainActivity.this, PermissionActivity.class));
// startActivity(new Intent(MainActivity.this, PermissionActivity.class));
getPermissions();
}
}
setDefaultDesktop();
@@ -391,6 +406,9 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
if (mUpdateAddressReceiver != null) {
unregisterReceiver(mUpdateAddressReceiver);
}
if (mVoiceAssistantReceiver != null) {
unregisterReceiver(mVoiceAssistantReceiver);
}
RemoteManager.removeListener(this);
}
@@ -423,6 +441,60 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
view.setVisibility(View.VISIBLE);
}
private PermissionsDialog mPermissionsDialog;
public void getPermissions() {
Log.e(TAG, "getPermissions: ");
if (XXPermissions.isGranted(MainActivity.this, PermissionActivity.PERMISSION_CHECK)) {
Log.e(TAG, "getPermissions: 获取录音权限成功");
} else {
if (mPermissionsDialog != null) {
mPermissionsDialog.dismiss();
mPermissionsDialog = null;
}
mPermissionsDialog = new PermissionsDialog(MainActivity.this);
mPermissionsDialog.setPermissionsCallback(new PermissionsDialog.PermissionsCallback() {
@Override
public void onGranted() {
mPermissionsDialog.dismiss();
XXPermissions.with(MainActivity.this)
.permission(PermissionActivity.PERMISSION_CHECK)
.request(new OnPermissionCallback() {
@Override
public void onGranted(@androidx.annotation.NonNull List<String> permissions, boolean allGranted) {
Log.e(TAG, "onGranted: permissions = " + permissions + " allGranted = " + allGranted);
if (!allGranted) {
Toast.makeText(MainActivity.this, "存储权限未正常授予", Toast.LENGTH_SHORT).show();
return;
}
Log.e(TAG, "onGranted: 获取存储权限成功");
}
@Override
public void onDenied(@androidx.annotation.NonNull List<String> permissions, boolean doNotAskAgain) {
Log.e(TAG, "onDenied: permissions = " + permissions + " doNotAskAgain = " + doNotAskAgain);
if (doNotAskAgain) {
Toast.makeText(MainActivity.this, "被永久拒绝授权,请手动授予存储权限", Toast.LENGTH_SHORT).show();
// 如果是被永久拒绝就跳转到应用权限系统设置页面
XXPermissions.startPermissionActivity(MainActivity.this, permissions);
} else {
Log.e(TAG, "onGranted: 获取存储权限失败");
}
}
});
}
@Override
public void onDenied() {
mPermissionsDialog.dismiss();
}
});
mPermissionsDialog.setContent("桌面需要获取存储权限保存作业,获取定位提供给小程序查看,请授予后使用");
mPermissionsDialog.show();
}
}
private boolean checkPermission() {
return XXPermissions.isGranted(this, PermissionActivity.PERMISSION_CHECK);
}
@@ -566,7 +638,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
if (checkPermission()) {
Log.e(TAG, "onConfirm: all permission granted");
} else {
startActivity(new Intent(MainActivity.this, PermissionActivity.class));
// startActivity(new Intent(MainActivity.this, PermissionActivity.class));
getPermissions();
}
}
});
@@ -683,6 +756,28 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
}
}
private static final String VOICE_ASSISTANT_REFRESH_KEY = "voice_assistant_refresh";
private VoiceAssistantReceiver mVoiceAssistantReceiver;
private void registVoiceAssistantReceiver() {
mVoiceAssistantReceiver = new VoiceAssistantReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(VOICE_ASSISTANT_REFRESH_KEY);
registerReceiver(mVoiceAssistantReceiver, filter);
}
class VoiceAssistantReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e(TAG, "onReceive: " + action);
if (VOICE_ASSISTANT_REFRESH_KEY.equals(action)) {
int voice_assistant = intent.getIntExtra("voice_assistant", 0);
mViewDataBinding.ivRobot.setVisibility(voice_assistant == 1 ? View.VISIBLE : View.GONE);
}
}
}
public class BtnClick {
public void openRobot(View view) {
@@ -700,7 +795,7 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
public void open2(View view) {
// OpenApkUtils.getInstance().openApp("com.android.documentsui");
OpenApkUtils.getInstance().openApp("com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
OpenApkUtils.getInstance().openZySn();
}
public void open3(View view) {
@@ -749,8 +844,8 @@ public class MainActivity extends BaseMvvmActivity<MainViewModel, ActivityMainBi
intent.setPackage("com.uiui.zy");
sendBroadcast(intent);
int is_activation = Settings.Global.getInt(getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
if (is_activation == 1) {
boolean is_activation = RemoteManager.getInstance().getSnIsActivation();
if (is_activation) {
startActivity(new Intent(MainActivity.this, ExitActivity.class));
} else {
Utils.exitDesktop(MainActivity.this);

View File

@@ -16,6 +16,7 @@ import com.uiui.zyos.base.mvvm.BaseViewModel;
import com.uiui.zyos.bean.AppUpdateInfo;
import com.uiui.zyos.bean.BaseResponse;
import com.uiui.zyos.bean.SnInfo;
import com.uiui.zyos.bean.SystemSettings;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.databinding.ActivityMainBinding;
import com.uiui.zyos.manager.RemoteManager;
@@ -85,10 +86,41 @@ public class MainViewModel extends BaseViewModel<ActivityMainBinding, ActivityEv
Log.e("getSnInfo", "onComplete: ");
}
});
}
public MutableLiveData<SystemSettings> mSystemSettingsMutableLiveData = new MutableLiveData<>();
public void getSystemSettings() {
NetInterfaceManager.getInstance().getsettingControl()
.subscribe(new Observer<BaseResponse<SystemSettings>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getSystemSettings", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<SystemSettings> systemSettingsBaseResponse) {
Log.e("getSystemSettings", "onNext: " + systemSettingsBaseResponse);
if (systemSettingsBaseResponse.code == 200) {
SystemSettings systemSettings = systemSettingsBaseResponse.data;
mSystemSettingsMutableLiveData.setValue(systemSettings);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getSystemSettings", "onError: " + e.getMessage());
}
@Override
public void onComplete() {
Log.e("getSystemSettings", "onComplete: ");
}
});
}
public MutableLiveData<AppUpdateInfo> mAppUpdateInfoData = new MutableLiveData<>();
public void checkUpdate() {

View File

@@ -32,9 +32,9 @@ public class PermissionActivity extends BaseMvvmActivity<PermissionViewModel, Ac
public static final String[] PERMISSION_CHECK = new String[]{
Permission.WRITE_EXTERNAL_STORAGE,
Permission.READ_PHONE_STATE,
// Permission.WRITE_SETTINGS,
Permission.ACCESS_COARSE_LOCATION,
// Permission.READ_PHONE_STATE,
Permission.WRITE_SETTINGS,
// Permission.ACCESS_COARSE_LOCATION,
Permission.ACCESS_FINE_LOCATION,
// Permission.ACCESS_BACKGROUND_LOCATION,
};
@@ -87,9 +87,9 @@ public class PermissionActivity extends BaseMvvmActivity<PermissionViewModel, Ac
@Override
protected void onResume() {
super.onResume();
if (XXPermissions.isGranted(this, PermissionActivity.PERMISSION_CHECK)) {
finish();
}
// if (XXPermissions.isGranted(this, PermissionActivity.PERMISSION_CHECK)) {
// finish();
// }
if (XXPermissions.isGranted(this, Permission.WRITE_EXTERNAL_STORAGE)) {
mViewDataBinding.tvAuth0.setText("已授权");
mViewDataBinding.tvAuth0.setEnabled(false);
@@ -126,7 +126,12 @@ public class PermissionActivity extends BaseMvvmActivity<PermissionViewModel, Ac
} else {
mViewDataBinding.tvAuth5.setText("去授权");
}
if (XXPermissions.isGranted(this, Permission.NOTIFICATION_SERVICE)) {
mViewDataBinding.tvAuth6.setText("已授权");
mViewDataBinding.tvAuth6.setEnabled(false);
} else {
mViewDataBinding.tvAuth6.setText("去授权");
}
}
private void getPermission(String... permissions) {
@@ -189,5 +194,8 @@ public class PermissionActivity extends BaseMvvmActivity<PermissionViewModel, Ac
getPermission(Permission.ACCESS_BACKGROUND_LOCATION);
}
public void open_notification(View view) {
getPermission(Permission.NOTIFICATION_SERVICE);
}
}
}

View File

@@ -0,0 +1,52 @@
package com.uiui.zyos.activity.service;
import android.view.View;
import androidx.lifecycle.Observer;
import com.uiui.zyos.R;
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
import com.uiui.zyos.bean.GuideBean;
import com.uiui.zyos.databinding.ActivityServiceBinding;
import com.uiui.zyos.utils.GlideLoadUtils;
public class ServiceActivity extends BaseMvvmActivity <ServiceViewModel, ActivityServiceBinding>{
@Override
protected int getLayoutId() {
return R.layout.activity_service;
}
@Override
protected void initDataBinding() {
mViewModel.setCtx(this);
mViewModel.setLifecycle(getLifecycleSubject());
mViewModel.setVDBinding(mViewDataBinding);
}
@Override
public void initView() {
hideNavigationBar();
}
@Override
public void initData() {
mViewModel.getGuideBeanData().observe(this, new Observer<GuideBean>() {
@Override
public void onChanged(GuideBean guideBean) {
GlideLoadUtils.getInstance().glideLoad(ServiceActivity.this, guideBean.getFile(), mViewDataBinding.ivQrcode, R.drawable.wechat_service);
}
});
mViewModel.getQrCode();
}
// 隐藏导航栏
private void hideNavigationBar() {
View decorView = getWindow().getDecorView();
int uiOptions = View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
// | View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY;
decorView.setSystemUiVisibility(uiOptions);
}
}

View File

@@ -0,0 +1,66 @@
package com.uiui.zyos.activity.service;
import android.util.Log;
import androidx.lifecycle.MutableLiveData;
import com.trello.rxlifecycle4.RxLifecycle;
import com.trello.rxlifecycle4.android.ActivityEvent;
import com.uiui.zyos.base.mvvm.BaseViewModel;
import com.uiui.zyos.bean.BaseResponse;
import com.uiui.zyos.bean.GuideBean;
import com.uiui.zyos.databinding.ActivityServiceBinding;
import com.uiui.zyos.network.NetInterfaceManager;
import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Observer;
import io.reactivex.rxjava3.disposables.Disposable;
public class ServiceViewModel extends BaseViewModel<ActivityServiceBinding, ActivityEvent> {
@Override
public ActivityServiceBinding getVDBinding() {
return binding;
}
@Override
public void onDestroy() {
}
private MutableLiveData<GuideBean> mGuideBeanData = new MutableLiveData<>();
public MutableLiveData<GuideBean> getGuideBeanData() {
return mGuideBeanData;
}
public void getQrCode() {
NetInterfaceManager.getInstance().getFilesObservable(9)
.compose(RxLifecycle.bindUntilEvent(getLifecycle(), ActivityEvent.DESTROY))
.subscribe(new Observer<BaseResponse<GuideBean>>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.e("getQrCode", "onSubscribe: ");
}
@Override
public void onNext(@NonNull BaseResponse<GuideBean> guideBeanBaseResponse) {
Log.e("getQrCode", "onNext: " + guideBeanBaseResponse);
if (guideBeanBaseResponse.code == 200) {
GuideBean guideBean = guideBeanBaseResponse.data;
mGuideBeanData.setValue(guideBean);
}
}
@Override
public void onError(@NonNull Throwable e) {
Log.e("getQrCode", "onError: " + e.getMessage());
}
@Override
public void onComplete() {
Log.e("getQrCode", "onComplete: ");
}
});
}
}

View File

@@ -20,6 +20,7 @@ import com.tencent.mmkv.MMKV;
import com.uiui.zyos.BuildConfig;
import com.uiui.zyos.R;
import com.uiui.zyos.activity.edit.EditActivity;
import com.uiui.zyos.activity.permission.PermissionActivity;
import com.uiui.zyos.activity.update.UpdateActivity;
import com.uiui.zyos.base.mvvm.BaseMvvmActivity;
import com.uiui.zyos.bean.AppUpdateInfo;
@@ -274,5 +275,9 @@ public class UserActivity extends BaseMvvmActivity<UserViewModel, ActivityUserBi
public void selectPic(View v) {
selectPicture();
}
public void checkPermission(View view) {
startActivity(new Intent(UserActivity.this, PermissionActivity.class));
}
}
}

View File

@@ -3,8 +3,6 @@ package com.uiui.zyos.adapter;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -20,17 +18,15 @@ import com.hjq.toast.Toaster;
import com.uiui.zyos.R;
import com.uiui.zyos.activity.ManualActivity;
import com.uiui.zyos.activity.PasswordActivity;
import com.uiui.zyos.activity.ServiceActivity;
import com.uiui.zyos.activity.service.ServiceActivity;
import com.uiui.zyos.bean.DesktopIcon;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.manager.AppManager;
import com.uiui.zyos.manager.RemoteManager;
import com.uiui.zyos.utils.ApkUtils;
import com.uiui.zyos.utils.AppUsedTimeUtils;
import com.uiui.zyos.utils.BitmapUtils;
import com.uiui.zyos.utils.IconUtils;
import com.uiui.zyos.utils.OpenApkUtils;
import java.util.ArrayList;
import java.util.List;
public class AppAdapter extends RecyclerView.Adapter<AppAdapter.AppHolder> {
@@ -107,8 +103,8 @@ public class AppAdapter extends RecyclerView.Adapter<AppAdapter.AppHolder> {
OpenApkUtils.getInstance().openARHuiben();
break;
default:
int settingOtherAppInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1);
if (settingOtherAppInstaller == 0 && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) {
boolean settingOtherAppInstaller = RemoteManager.getInstance().showThirdApp();
if (!settingOtherAppInstaller && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) {
Toaster.show("已禁止应用打开");
} else {
OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName());

View File

@@ -3,7 +3,6 @@ package com.uiui.zyos.adapter;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.provider.Settings;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
@@ -19,10 +18,10 @@ import com.hjq.toast.Toaster;
import com.uiui.zyos.R;
import com.uiui.zyos.activity.ManualActivity;
import com.uiui.zyos.activity.PasswordActivity;
import com.uiui.zyos.activity.ServiceActivity;
import com.uiui.zyos.activity.service.ServiceActivity;
import com.uiui.zyos.bean.DesktopIcon;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.manager.AppManager;
import com.uiui.zyos.manager.RemoteManager;
import com.uiui.zyos.utils.ApkUtils;
import com.uiui.zyos.utils.BitmapUtils;
import com.uiui.zyos.utils.IconUtils;
@@ -98,8 +97,8 @@ public class FileAdapter extends RecyclerView.Adapter<FileAdapter.AppHolder> {
OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName());
break;
default:
int settingOtherAppInstaller = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.SETTING_OTHER_APPINSTALLER_KEY, 1);
if (settingOtherAppInstaller == 0 && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) {
boolean settingOtherAppInstaller = RemoteManager.getInstance().showThirdApp();
if (!settingOtherAppInstaller && !ApkUtils.isSystemApp(mContext, desktopIcon.getPackageName())) {
Toaster.show("已禁止应用打开");
} else {
OpenApkUtils.getInstance().openApp(desktopIcon.getPackageName(), desktopIcon.getClassName());

View File

@@ -4,8 +4,9 @@ package com.uiui.zyos.bean;
import com.google.gson.Gson;
import com.google.gson.JsonParser;
import org.jetbrains.annotations.NotNull;
import java.io.Serializable;
import java.util.List;
public class SystemSettings implements Serializable {
@@ -37,7 +38,7 @@ public class SystemSettings implements Serializable {
int qch_restore;
int setting_browserInput;
int dev_mode;
List<Contact> setting_sos;
String setting_sos;
String setting_volume;
String setting_luminance;
String setting_typeface;
@@ -55,11 +56,21 @@ public class SystemSettings implements Serializable {
int setting_location;
int setting_charge;
int setting_other_appInstaller;
int is_quickapp;
String quickapp;
int is_storeinstall;
int is_timecontrol;
String timecontrol_start;
String timecontrol_end;
int is_return_android;
int is_health;
int is_shopping;
int is_info;
int is_bluetooth_share;
int is_developer_mode;
int is_device_recover;
int is_top_notify;
int is_bottom_bar;
int is_notify_bar_show;
int voice_assistant;
public int getQch_restore() {
return qch_restore;
@@ -262,11 +273,11 @@ public class SystemSettings implements Serializable {
this.setting_hotspot = setting_hotspot;
}
public List<Contact> getSetting_sos() {
public String getSetting_sos() {
return setting_sos;
}
public void setSetting_sos(List<Contact> setting_sos) {
public void setSetting_sos(String setting_sos) {
this.setting_sos = setting_sos;
}
@@ -398,30 +409,119 @@ public class SystemSettings implements Serializable {
this.setting_other_appInstaller = setting_other_appInstaller;
}
public int getIs_health() {
return is_health;
public int getIs_quickapp() {
return is_quickapp;
}
public void setIs_health(int is_health) {
this.is_health = is_health;
public void setIs_quickapp(int is_quickapp) {
this.is_quickapp = is_quickapp;
}
public int getIs_shopping() {
return is_shopping;
public String getQuickapp() {
return quickapp;
}
public void setIs_shopping(int is_shopping) {
this.is_shopping = is_shopping;
public void setQuickapp(String quickapp) {
this.quickapp = quickapp;
}
public int getIs_info() {
return is_info;
public int getIs_storeinstall() {
return is_storeinstall;
}
public void setIs_info(int is_info) {
this.is_info = is_info;
public void setIs_storeinstall(int is_storeinstall) {
this.is_storeinstall = is_storeinstall;
}
public int getIs_timecontrol() {
return is_timecontrol;
}
public void setIs_timecontrol(int is_timecontrol) {
this.is_timecontrol = is_timecontrol;
}
public String getTimecontrol_start() {
return timecontrol_start;
}
public void setTimecontrol_start(String timecontrol_start) {
this.timecontrol_start = timecontrol_start;
}
public String getTimecontrol_end() {
return timecontrol_end;
}
public void setTimecontrol_end(String timecontrol_end) {
this.timecontrol_end = timecontrol_end;
}
public int getIs_return_android() {
return is_return_android;
}
public void setIs_return_android(int is_return_android) {
this.is_return_android = is_return_android;
}
public int getIs_bluetooth_share() {
return is_bluetooth_share;
}
public void setIs_bluetooth_share(int is_bluetooth_share) {
this.is_bluetooth_share = is_bluetooth_share;
}
public int getIs_developer_mode() {
return is_developer_mode;
}
public void setIs_developer_mode(int is_developer_mode) {
this.is_developer_mode = is_developer_mode;
}
public int getIs_device_recover() {
return is_device_recover;
}
public void setIs_device_recover(int is_device_recover) {
this.is_device_recover = is_device_recover;
}
public int getIs_top_notify() {
return is_top_notify;
}
public void setIs_top_notify(int is_top_notify) {
this.is_top_notify = is_top_notify;
}
public int getIs_bottom_bar() {
return is_bottom_bar;
}
public void setIs_bottom_bar(int is_bottom_bar) {
this.is_bottom_bar = is_bottom_bar;
}
public int getIs_notify_bar_show() {
return is_notify_bar_show;
}
public void setIs_notify_bar_show(int is_notify_bar_show) {
this.is_notify_bar_show = is_notify_bar_show;
}
public int getVoice_assistant() {
return voice_assistant;
}
public void setVoice_assistant(int voice_assistant) {
this.voice_assistant = voice_assistant;
}
@NotNull
@Override
public String toString() {
return JsonParser.parseString(new Gson().toJson(this)).getAsJsonObject().toString();

View File

@@ -31,6 +31,7 @@ public class CommonConfig {
/*是否激活接口请求缓存*/
public static final String ACTIVATIONBEAN_KEY = "IFLYTEK_UIUI_ACTIVATIONBEAN_KEY";
/*是否激活*/
@Deprecated
public static final String UIUI_ACTIVATION_KEY = "iflytek_uiui_activation";
/*激活码类型*/
public static final String UIUI_CODE_TYPE_KEY = "iflytek_uiui_code_type";

View File

@@ -0,0 +1,121 @@
package com.uiui.zyos.dialog;
import android.content.Context;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import com.uiui.zyos.R;
public class PermissionsDialog extends AlertDialog {
private Context mContext;
private TextView tv_title;
private TextView tv_content;
private TextView tv_cancel;
private TextView tv_confirm;
private String mTitle;
private String mContent;
private String mDeniedtext;
private String mGrantedtext;
public void setTitle(String title) {
mTitle = title;
}
public void setContent(String content) {
mContent = content;
}
public void setDeniedtext(String deniedtext) {
mDeniedtext = deniedtext;
}
public void setGrantedtext(String grantedtext) {
mGrantedtext = grantedtext;
}
public PermissionsDialog(@NonNull Context context) {
super(context, R.style.CustomDialog);
this.mContext = context;
}
public PermissionsDialog(@NonNull Context context, int themeResId) {
super(context, themeResId);
this.mContext = context;
}
public PermissionsDialog(@NonNull Context context, boolean cancelable, @Nullable OnCancelListener cancelListener) {
super(context, cancelable, cancelListener);
this.mContext = context;
}
public void setPermissionsCallback(PermissionsCallback callback) {
this.mPermissionsCallback = callback;
}
private PermissionsCallback mPermissionsCallback;
public interface PermissionsCallback {
void onGranted();
void onDenied();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.dialog_permissions);
setCanceledOnTouchOutside(false);
tv_title = findViewById(R.id.tv_title);
tv_content = findViewById(R.id.tv_content);
tv_cancel = findViewById(R.id.tv_cancel);
tv_confirm = findViewById(R.id.tv_confirm);
tv_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPermissionsCallback != null) {
mPermissionsCallback.onDenied();
}
}
});
tv_confirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mPermissionsCallback != null) {
mPermissionsCallback.onGranted();
}
}
});
setText();
}
@Override
public void show() {
super.show();
setText();
}
private void setText() {
if (!TextUtils.isEmpty(mTitle)) {
tv_title.setText(mTitle);
}
if (!TextUtils.isEmpty(mContent)) {
tv_content.setText(mContent);
}
if (!TextUtils.isEmpty(mDeniedtext)) {
tv_cancel.setText(mDeniedtext);
}
if (!TextUtils.isEmpty(mGrantedtext)) {
tv_confirm.setText(mGrantedtext);
}
}
}

View File

@@ -1,5 +1,7 @@
package com.uiui.zyos.fragment.app;
import android.graphics.drawable.Drawable;
import androidx.lifecycle.MutableLiveData;
import com.trello.rxlifecycle4.android.FragmentEvent;
@@ -33,7 +35,14 @@ public class AppViewModel extends BaseViewModel<FragmentAppBinding, FragmentEven
appstoreDesktopIcon.setLable(ApkUtils.getAppName(getCtx(), "com.uiui.zyappstore"));
appstoreDesktopIcon.setPackageName(AppManager.APPSTORE_PACKAGE_NAME);
appstoreDesktopIcon.setClassName(AppManager.APPSTORE_CLASS_NAME);
appstoreDesktopIcon.setIcon(ApkUtils.getAppDrawable(getCtx(), "com.uiui.zyappstore"));
appstoreDesktopIcon.setLable("应用市场");
Drawable appstoreDrawable;
if (ApkUtils.isAvailable(getCtx(), AppManager.APPSTORE_PACKAGE_NAME)) {
appstoreDrawable = ApkUtils.getAppDrawable(getCtx(), "com.uiui.zyappstore");
} else {
appstoreDrawable = getCtx().getDrawable(R.drawable.com_android_appstore);
}
appstoreDesktopIcon.setIcon(appstoreDrawable);
desktopIcons.add(desktopIcons.size(), appstoreDesktopIcon);
DesktopIcon updateDesktopIcon = new DesktopIcon();

View File

@@ -45,13 +45,11 @@ import com.uiui.zyos.bean.StudyStatBean;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.databinding.FragmentUserBinding;
import com.uiui.zyos.jxw.JxwPackageConfig;
import com.uiui.zyos.manager.RemoteManager;
import com.uiui.zyos.utils.ApkUtils;
import com.uiui.zyos.utils.OpenApkUtils;
import com.uiui.zyos.utils.ScreenUtils;
import com.uiui.zyos.utils.TimeUtils;
import com.uiui.zyos.utils.Utils;
import com.uiui.zyos.view.EquallyDividedItemDecoration;
import com.uiui.zyos.view.HorizontalDecorationWithoutFirst;
import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration;
import com.uiui.zyos.view.VerticalDecorationWithoutFirst;
@@ -323,24 +321,24 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
}
private void setButtonVisibility() {
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
boolean is_activation = RemoteManager.getInstance().getSnIsActivation();
Log.e(TAG, "setButtonVisibility: " + is_activation);
if (is_activation != 1) {
// tvExit.setVisibility(View.VISIBLE);
if (is_activation) {
boolean isReturnAndroid = RemoteManager.getInstance().isReturnAndroid();
if (isReturnAndroid) {
// mViewDataBinding.tvExit.setVisibility(View.VISIBLE);
} else {
// mViewDataBinding.tvExit.setVisibility(View.INVISIBLE);
}
mViewDataBinding.ivActivation.setVisibility(View.GONE);
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
} else {
// mViewDataBinding.tvExit.setVisibility(View.VISIBLE);
mViewDataBinding.ivActivation.setVisibility(View.VISIBLE);
mViewDataBinding.clStudyTime.setVisibility(View.GONE);
Glide.with(mViewDataBinding.ivAvatar).load(mMMKV.decodeString(CommonConfig.UIUI_USER_AVATAR_KEY)).error(R.drawable.default_avatar).into(mViewDataBinding.ivAvatar);
mViewDataBinding.tvName.setText(mMMKV.decodeString(CommonConfig.UIUI_USER_NAME_KEY, getString(R.string.default_nickname)));
mViewDataBinding.tvGrade.setText(mMMKV.decodeString(CommonConfig.UIUI_USER_GRADE_KEY, getString(R.string.default_grade)));
} else {
int isReturnAndroid = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_RETURN_ANDROID_KEY, 1);
if (isReturnAndroid == 0) {
// tvExit.setVisibility(View.INVISIBLE);
} else {
// tvExit.setVisibility(View.VISIBLE);
}
mViewDataBinding.ivActivation.setVisibility(View.GONE);
mViewDataBinding.clStudyTime.setVisibility(View.VISIBLE);
}
}
@@ -440,12 +438,16 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
}
public static final String ACTION_REFRESH_BINDING_STATUS = "RefreshBindingStatus";
public static final String ACTION_REFRESH_LOVE_ENCOURAGEMENT = "RefreshLoveEncouragement";
public static final String ACTION_REFRESH_HOMEWORK_REMINDERS = "RefreshHomeworkReminders";
private void registerRefreshReceiver() {
if (mRefreshReceiver == null) {
mRefreshReceiver = new RefreshReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(ACTION_REFRESH_BINDING_STATUS);
filter.addAction(ACTION_REFRESH_LOVE_ENCOURAGEMENT);
filter.addAction(ACTION_REFRESH_HOMEWORK_REMINDERS);
mContext.registerReceiver(mRefreshReceiver, filter);
}
}
@@ -457,9 +459,18 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e("RefreshReceiver", "onReceive: " + action);
if (ACTION_REFRESH_BINDING_STATUS.equals(action)) {
mViewModel.getSnInfo();
setButtonVisibility();
switch (action) {
case ACTION_REFRESH_BINDING_STATUS:
mViewModel.getSnInfo();
setButtonVisibility();
break;
case ACTION_REFRESH_LOVE_ENCOURAGEMENT:
mViewModel.getPhrase();
break;
case ACTION_REFRESH_HOMEWORK_REMINDERS:
mViewModel.getHomework();
break;
default:
}
}
}
@@ -532,6 +543,7 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
mWiFiStatuReceiver = new WiFiStatuReceiver();
IntentFilter filter = new IntentFilter();
filter.addAction(NETWORK_STATE_CHANGE);
filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
filter.addAction(WifiManager.WIFI_STATE_CHANGED_ACTION);
filter.addAction(WifiManager.RSSI_CHANGED_ACTION);
mContext.registerReceiver(mWiFiStatuReceiver, filter);
@@ -625,9 +637,9 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
status == BatteryManager.BATTERY_STATUS_FULL;
//当前剩余电量
int level = intent.getIntExtra("level", 0);
int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0);
//电量最大值
int scale = intent.getIntExtra("scale", 100);
int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
//电量百分比
int batteryPer = (int) (level / (float) scale * 100);
@@ -646,8 +658,8 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
intent.setPackage("com.uiui.zy");
mContext.sendBroadcast(intent);
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
if (is_activation == 1) {
boolean is_activation = RemoteManager.getInstance().getSnIsActivation();
if (is_activation) {
startActivity(new Intent(mContext, ExitActivity.class));
} else {
Utils.exitDesktop(mContext);
@@ -655,7 +667,7 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
}
public void openSn(View view) {
ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
OpenApkUtils.getInstance().openZySn();
}
public void openUser(View view) {
@@ -678,7 +690,7 @@ public class UserFragment extends BaseMvvmFragment<UserViewModel, FragmentUserBi
mViewModel.getHomework();
}
public void toWifi(View view){
public void toWifi(View view) {
mContext.startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));
}
}

View File

@@ -7,7 +7,7 @@ import android.os.Bundle;
import android.view.View;
import com.uiui.zyos.R;
import com.uiui.zyos.activity.ServiceActivity;
import com.uiui.zyos.activity.service.ServiceActivity;
import com.uiui.zyos.base.mvvm.fragment.BaseMvvmFragment;
import com.uiui.zyos.databinding.FragmentDeviceBinding;
import com.uiui.zyos.manager.RemoteManager;

View File

@@ -51,7 +51,7 @@ public class ParentsFragment extends BaseMvvmFragment<ParentsViewModel, Fragment
public class BtnClick {
public void openSn(View view) {
OpenApkUtils.getInstance().openApp("com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
OpenApkUtils.getInstance().openZySn();
}
}

View File

@@ -96,7 +96,12 @@ public class AmapManager {
Gson gson = new Gson();
Type type = new TypeToken<MapBean>() {
}.getType();
mMapBean = gson.fromJson(jsonString, type);
try {
mMapBean = gson.fromJson(jsonString, type);
} catch (Exception e) {
Log.e(TAG, "initAmap: ");
mMMKV.remove(CommonConfig.MAP_LOCATION_JSON_KEY);
}
} else {
Log.e(TAG, "initAmap: jsonString is empty");
}

View File

@@ -18,6 +18,7 @@ import com.tencent.bugly.crashreport.CrashReport;
import com.tencent.mmkv.MMKV;
import com.uiui.zy.IGetInfoInterface;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.utils.ActivationUtil;
import java.util.ArrayList;
import java.util.HashSet;
@@ -72,6 +73,14 @@ public class RemoteManager {
e.printStackTrace();
}
try {
boolean actitvation = mGetInfoInterface.SnIsActivation();
Log.e(TAG, "onServiceConnected: SnIsActivation = " + actitvation);
mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, actitvation ? ActivationUtil.ACTIVATED_KEY : ActivationUtil.INACTIVATED_KEY);
} catch (Exception e) {
Log.e(TAG, "onServiceConnected: SnIsActivation" + e.getMessage());
}
Log.e(TAG, "onServiceConnected: " + getSerial());
aliyunPushInit();
}
@@ -207,17 +216,21 @@ public class RemoteManager {
}
public boolean getSnIsActivation() {
try {
return mGetInfoInterface.SnIsActivation();
} catch (RemoteException e) {
e.printStackTrace();
Log.e(TAG, "getSnIsActivation: " + e.getMessage());
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
return is_activation == 1;
if (mGetInfoInterface != null) {
try {
return mGetInfoInterface.SnIsActivation();
} catch (RemoteException e) {
e.printStackTrace();
Log.e(TAG, "getSnIsActivation: " + e.getMessage());
return false;
}
}
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
return is_activation == 1;
}
public void setDefaultDesktop(String pkg) {
Log.e(TAG, "setDefaultDesktop: " + pkg);
if (mGetInfoInterface != null) {
try {
mGetInfoInterface.setDefaultLauncher(pkg);
@@ -228,6 +241,42 @@ public class RemoteManager {
}
}
public void exitDesktop() {
Log.e(TAG, "exitDesktop: ");
if (mGetInfoInterface != null) {
try {
mGetInfoInterface.exitDesktop();
} catch (RemoteException e) {
Log.e(TAG, "exitDesktop: " + e.getMessage());
e.printStackTrace();
}
}
}
public boolean isReturnAndroid() {
if (mGetInfoInterface != null) {
try {
return mGetInfoInterface.isReturnAndroid();
} catch (RemoteException e) {
Log.e(TAG, "isReturnAndroid: " + e.getMessage());
e.printStackTrace();
}
}
return true;
}
public boolean showThirdApp() {
if (mGetInfoInterface != null) {
try {
return mGetInfoInterface.showThirdApp();
} catch (RemoteException e) {
Log.e(TAG, "showThirdApp: " + e.getMessage());
e.printStackTrace();
}
}
return true;
}
public List<String> getAdminApp() {
if (mGetInfoInterface != null) {
try {

View File

@@ -23,6 +23,7 @@ import com.uiui.zyos.bean.LessonSetting;
import com.uiui.zyos.bean.PhraseContent;
import com.uiui.zyos.bean.SnInfo;
import com.uiui.zyos.bean.StudyStatBean;
import com.uiui.zyos.bean.SystemSettings;
import com.uiui.zyos.bean.UserAvatarInfo;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.disklrucache.CacheHelper;
@@ -39,6 +40,7 @@ import com.uiui.zyos.network.api.HomeworkUpdateApi;
import com.uiui.zyos.network.api.PhraseApi;
import com.uiui.zyos.network.api.RunNewApp;
import com.uiui.zyos.network.api.SNInfoApi;
import com.uiui.zyos.network.api.SettingApi;
import com.uiui.zyos.network.api.StudyStatApi;
import com.uiui.zyos.network.api.UpdateAddressApi;
import com.uiui.zyos.network.api.UpdateAlarmClockApi;
@@ -362,7 +364,12 @@ public class NetInterfaceManager {
.observeOn(AndroidSchedulers.mainThread());
}
public Observable<BaseResponse<SystemSettings>> getsettingControl() {
return mRetrofit.create(SettingApi.class)
.getSetting(RemoteManager.getInstance().getSerial())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}
/*
*

View File

@@ -41,6 +41,8 @@ public class UrlAddress {
public final static String GET_CLOUD_LESSON = "Control/getCloudLessonSetting";
public final static String GET_CLOUD_LESSON_APP = "Control/getCloudLessonApp";
/*获取系统设置*/
public final static String GET_SETTINGS = "control/getSetting";
public static final String UIUIOS_ROOT_URL = "https://map.uiuios.com/android/";
/*获取应用更新*/

View File

@@ -0,0 +1,16 @@
package com.uiui.zyos.network.api;
import com.uiui.zyos.bean.BaseResponse;
import com.uiui.zyos.bean.SystemSettings;
import com.uiui.zyos.network.UrlAddress;
import io.reactivex.rxjava3.core.Observable;
import retrofit2.http.GET;
import retrofit2.http.Query;
public interface SettingApi {
@GET(UrlAddress.GET_SETTINGS)
Observable<BaseResponse<SystemSettings>> getSetting(
@Query("sn") String sn
);
}

View File

@@ -6,6 +6,7 @@ import android.content.Context;
import android.content.Intent;
import com.uiui.zyos.disklrucache.CacheHelper;
import com.uiui.zyos.fragment.user.UserFragment;
import com.uiui.zyos.network.NetInterfaceManager;
import com.hjq.toast.Toaster;
@@ -47,22 +48,46 @@ public class PushManager {
private static final String JIGUANG_ALARM_CLOCK = "57";
/*网课模式*/
private static final String ONLINE_COURSE_MODE = "71";
/*作业提醒*/
private static final String HOMEWORK_REMINDERS = "115";
/*爱的鼓励*/
private static final String LOVE_ENCOURAGEMENT = "121";
public void setPushContent(String title, String extras) {
switch (title) {
case JIGUANG_ALARM_CLOCK:
Toaster.debugShow("收到推送消息: 设置闹钟");
NetInterfaceManager.getInstance().getAlarmClock();
Intent intent = new Intent(SET_ALARMCLOCK);
mContext.sendBroadcast(intent);
sendAlarmClock(extras);
break;
case ONLINE_COURSE_MODE:
Toaster.debugShow("收到推送消息: 网课模式");
NetInterfaceManager.getInstance().getCloudLessonSettings();
break;
case HOMEWORK_REMINDERS:
sendHomework(extras);
break;
case LOVE_ENCOURAGEMENT:
Toaster.debugShow("收到推送消息: 爱的鼓励");
sendEncouragement(extras);
default:
}
}
private void sendAlarmClock(String extras) {
NetInterfaceManager.getInstance().getAlarmClock();
Intent intent = new Intent(SET_ALARMCLOCK);
mContext.sendBroadcast(intent);
}
private void sendHomework(String extras) {
Intent intent = new Intent(UserFragment.ACTION_REFRESH_HOMEWORK_REMINDERS);
mContext.sendBroadcast(intent);
}
private void sendEncouragement(String extras) {
Intent intent = new Intent(UserFragment.ACTION_REFRESH_LOVE_ENCOURAGEMENT);
mContext.sendBroadcast(intent);
}
}

View File

@@ -22,9 +22,11 @@ import androidx.core.app.NotificationManagerCompat;
import com.blankj.utilcode.util.NetworkUtils;
import com.google.gson.JsonObject;
import com.tencent.mmkv.MMKV;
import com.uiui.zyos.BuildConfig;
import com.uiui.zyos.R;
import com.uiui.zyos.activity.main.MainActivity;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.manager.RemoteManager;
import com.uiui.zyos.utils.ActivationUtil;
import com.uiui.zyos.utils.ServiceAliveUtils;
@@ -59,6 +61,8 @@ import io.reactivex.rxjava3.functions.Consumer;
public class SocketService extends Service implements NetworkUtils.OnNetworkStatusChangedListener {
private static final String TAG = "JWebSocketClientService";
private MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
public JWebSocketClient mJWebSocketClient;
// private SocketServiceBinder mBinder = new SocketServiceBinder();
@@ -112,6 +116,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat
Log.e(TAG, "onCreate: ");
NetworkUtils.registerNetworkStatusChangedListener(this);
registerScreenLockReceiver();
registerJxwRegisterRefreshReceiver();
if (ActivationUtil.isActivation()) {
//初始化websocket
@@ -120,6 +125,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat
} else {
Log.e(TAG, "onCreate: 未激活不连接");
}
// boolean isServiceRunning = ServiceAliveUtils.isServiceAlive(this, MainService.class.getName());
// Log.e(TAG, "onCreate: isServiceRunning = " + isServiceRunning);
// if (!isServiceRunning) {
@@ -148,6 +154,9 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat
if (mScreenLockReceiver != null) {
unregisterReceiver(mScreenLockReceiver);
}
if (mJxwRegisterReceiver != null) {
unregisterReceiver(mJxwRegisterReceiver);
}
// unbindService(mServiceConnection);
}
@@ -223,6 +232,7 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat
switch (action) {
case Intent.ACTION_BOOT_COMPLETED:
case Intent.ACTION_USER_PRESENT:
case Intent.ACTION_SCREEN_ON:
sendMsgScreen();
break;
@@ -238,6 +248,33 @@ public class SocketService extends Service implements NetworkUtils.OnNetworkStat
}
}
public static final String JXW_REGISTER_SUCCESS = "com.zzj.regist_success";
private JxwRegisterReceiver mJxwRegisterReceiver;
private void registerJxwRegisterRefreshReceiver() {
if (mJxwRegisterReceiver == null) {
mJxwRegisterReceiver = new JxwRegisterReceiver();
}
IntentFilter filter = new IntentFilter();
filter.addAction(JXW_REGISTER_SUCCESS);
registerReceiver(mJxwRegisterReceiver, filter);
}
public class JxwRegisterReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.e("JxwRegisterReceiver", "onReceive: " + action);
if (JXW_REGISTER_SUCCESS.equals(action)) {
mMMKV.encode(JXW_REGISTER_SUCCESS, true);
mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, ActivationUtil.ACTIVATED_KEY);
initSocketClient();
startLoop();
}
}
}
private Disposable mDisposable;
private void dispose() {

View File

@@ -1,19 +1,21 @@
package com.uiui.zyos.utils;
import android.provider.Settings;
import com.tencent.mmkv.MMKV;
import com.uiui.zyos.base.BaseApplication;
import com.uiui.zyos.config.CommonConfig;
@Deprecated
public class ActivationUtil {
private static MMKV mMMKV = MMKV.mmkvWithID(CommonConfig.MMKV_ID, MMKV.MULTI_PROCESS_MODE);
/*写入1为激活*/
private static final int ACTIVATED_KEY = 1;
private static final int INACTIVATED_KEY = 0;
public static final int ACTIVATED_KEY = 1;
public static final int INACTIVATED_KEY = 0;
/*默认激活码类型*/
private static final int DEFAULT_CODE_TYPE = -1;
public static final int DEFAULT_CODE_TYPE = -1;
/*默认过期时间*/
private static final int DEFAULT_EXPIRE_TIME = -1;
public static final int DEFAULT_EXPIRE_TIME = -1;
/**
@@ -22,7 +24,7 @@ public class ActivationUtil {
* @return
*/
public static int getActivationStateCode() {
int activation = Settings.Global.getInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, INACTIVATED_KEY);
int activation = mMMKV.decodeInt(CommonConfig.UIUI_ACTIVATION_KEY, INACTIVATED_KEY);
return activation;
}
@@ -41,7 +43,7 @@ public class ActivationUtil {
* @param code
*/
public static void setActivation(int code) {
Settings.Global.putInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, code);
mMMKV.encode(CommonConfig.UIUI_ACTIVATION_KEY, code);
}
/**
@@ -50,7 +52,7 @@ public class ActivationUtil {
* @param code
*/
public static void setActivationCodeType(int code) {
Settings.Global.putInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_CODE_TYPE_KEY, code);
mMMKV.encode(CommonConfig.UIUI_CODE_TYPE_KEY, code);
}
/**
@@ -59,7 +61,7 @@ public class ActivationUtil {
* @return
*/
public static int getActivationCodeType() {
return Settings.Global.getInt(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_CODE_TYPE_KEY, DEFAULT_CODE_TYPE);
return mMMKV.decodeInt(CommonConfig.UIUI_CODE_TYPE_KEY, DEFAULT_CODE_TYPE);
}
/**
@@ -68,7 +70,7 @@ public class ActivationUtil {
* @param expireTime
*/
public static void setActivationExpireTime(long expireTime) {
Settings.Global.putLong(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_EXPIRE_TIME_KEY, expireTime);
mMMKV.encode(CommonConfig.UIUI_EXPIRE_TIME_KEY, expireTime);
}
/**
@@ -77,7 +79,7 @@ public class ActivationUtil {
* @return
*/
public static long getActivationExpireTime() {
return Settings.Global.getLong(BaseApplication.getContext().getContentResolver(), CommonConfig.UIUI_EXPIRE_TIME_KEY, DEFAULT_EXPIRE_TIME);
return mMMKV.decodeLong(CommonConfig.UIUI_EXPIRE_TIME_KEY, DEFAULT_EXPIRE_TIME);
}
}

View File

@@ -284,7 +284,7 @@ public class ApkUtils {
// infoIcon.setIcon(context.getDrawable(R.drawable.com_uiui_sn));
// infoIcon.setLable("我的设备");
// infoIcon.setPackageName("com.uiui.zy");
// infoIcon.setClassName("com.uiui.zy.activity.main.MainActivity");
// infoIcon.setClassName("com.uiui.zy.activity.splash.SplashActivity");
// infoIcon.setPosition(0);
// desktopIcons.add(0, infoIcon);
return desktopIcons;
@@ -746,9 +746,11 @@ public class ApkUtils {
Log.e(TAG, "getAppDrawable: ");
}
if (packageInfo != null) {
return packageInfo.applicationInfo.loadIcon(pm);
Drawable drawable = packageInfo.applicationInfo.loadIcon(pm);
return drawable;
} else {
return context.getDrawable(resId);
Drawable drawable = context.getDrawable(resId);
return drawable;
}
}

View File

@@ -128,7 +128,12 @@ public class GlideLoadUtils {
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
public void glideLoad(Activity activity, String url, ImageView imageView, int default_image) {
if (!activity.isDestroyed()) {
Glide.with(activity).load(url).centerCrop().error(default_image).into(imageView);
Glide.with(activity).load(url).into(new SimpleTarget<Drawable>() {
@Override
public void onResourceReady(@NonNull Drawable resource, @Nullable Transition<? super Drawable> transition) {
imageView.setImageDrawable(resource);
}
});
} else {
Log.i(TAG, "Picture loading failed,activity is Destroyed");
}

View File

@@ -7,6 +7,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Build;
import android.provider.Settings;
import android.text.TextUtils;
import android.util.Log;
@@ -18,6 +19,7 @@ import com.tencent.mmkv.MMKV;
import com.uiui.zyos.bean.LessonJson;
import com.uiui.zyos.config.CommonConfig;
import com.uiui.zyos.jxw.JxwPackageConfig;
import com.uiui.zyos.manager.RemoteManager;
import java.lang.reflect.Type;
import java.math.BigDecimal;
@@ -64,12 +66,12 @@ public class OpenApkUtils {
if (!ApkUtils.isAvailable(mContext, "com.uiui.zy")) {
return true;
}
int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0);
if (is_activation != 1) {
ApkUtils.openPackage(mContext, "com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
boolean is_activation = RemoteManager.getInstance().getSnIsActivation();
if (!is_activation) {
OpenApkUtils.getInstance().openZySn();
Toaster.show("请激活设备后使用");
}
return is_activation == 1;
return is_activation;
}
public boolean openPackageWithArgs(String packageName, String className, String name, String args) {
@@ -607,4 +609,30 @@ public class OpenApkUtils {
mContext.startActivity(intent);
}
public boolean openZySn() {
if (!ApkUtils.isAvailable(mContext, "com.uiui.zy")) {
Toaster.show("应用未安装");
return false;
}
try {
PackageManager pm = mContext.getPackageManager();
PackageInfo packageInfo = pm.getPackageInfo("com.uiui.zy", 0);
long appVersionCode;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
appVersionCode = packageInfo.getLongVersionCode();
} else {
appVersionCode = packageInfo.versionCode;
}
if (appVersionCode <= 95) {
openApp("com.uiui.zy", "com.uiui.zy.activity.main.MainActivity");
} else {
openApp("com.uiui.zy", "com.uiui.zy.activity.splash.SplashActivity");
}
return true;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
Log.e(TAG, "onCreate: " + e.getMessage());
}
return false;
}
}

View File

@@ -121,11 +121,11 @@ public class Utils {
* @return
*/
synchronized public static int getBatteryLevel(Context mContext) {
if (Build.VERSION.SDK_INT >= 21) {
return ((BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE)).getIntProperty(4);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return ((BatteryManager) mContext.getSystemService(Context.BATTERY_SERVICE)).getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
} else {
Intent intent = (new ContextWrapper(mContext)).registerReceiver(null, new IntentFilter("android.intent.action.BATTERY_CHANGED"));
return intent.getIntExtra("level", -1) * 100 / intent.getIntExtra("scale", -1);
Intent intent = (new ContextWrapper(mContext)).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
return intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0) * 100 / intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100);
}
}
@@ -248,26 +248,31 @@ public class Utils {
}
public static void exitDesktop(Activity context) {
if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) {
RemoteManager.getInstance().setDefaultDesktop("com.uiuipad.os");
if ("HONOR".equalsIgnoreCase(Build.BRAND)) {
RemoteManager.getInstance().exitDesktop();
// RemoteManager.getInstance().setDefaultDesktop("com.hihonor.android.launcher");
} else {
RemoteManager.getInstance().setDefaultDesktop(ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME);
}
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) {
if (!ApkUtils.openPackage(context, "com.uiuipad.os", "com.uiuipad.os.Launcher")) {
ApkUtils.gotoLauncher(context);
RemoteManager.getInstance().setDefaultDesktop("com.uiuipad.os");
} else {
// RemoteManager.getInstance().setDefaultDesktop(ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME);
}
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q) {
if ("U807".equals(BuildConfig.platform) && ApkUtils.isAvailable(context, "com.uiuipad.os")) {
if (!ApkUtils.openPackage(context, "com.uiuipad.os", "com.uiuipad.os.Launcher")) {
ApkUtils.gotoLauncher(context);
}
} else {
if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_Quickstep_CLASS_NAME)) {
ApkUtils.gotoLauncher(context);
}
}
} else {
if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_Quickstep_CLASS_NAME)) {
if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_CLASS_NAME)) {
ApkUtils.gotoLauncher(context);
}
}
} else {
if (!ApkUtils.openPackage(context, ApkUtils.ANDROID_LAUNCHER3_PACKAGE_NAME, ApkUtils.ANDROID_LAUNCHER3_CLASS_NAME)) {
ApkUtils.gotoLauncher(context);
}
}
context.finish();
System.exit(0);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 102 KiB

After

Width:  |  Height:  |  Size: 139 KiB

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="80dp"
android:height="80dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M512,12C235.9,12 12,235.9 12,512s223.9,500 500,500 500,-223.9 500,-500S788.1,12 512,12zM785.8,367.5 L455.7,697.7c-1.1,1.6 -1.8,3.4 -3.2,4.8 -6.6,6.6 -15.2,9.6 -23.8,9.4 -8.6,0.2 -17.3,-2.8 -23.8,-9.4 -1.4,-1.4 -2.1,-3.2 -3.2,-4.8l-163.5,-163.5c-12.7,-12.7 -12.7,-33.3 0,-46 12.7,-12.7 33.3,-12.7 46,0l144.5,144.5 311.1,-311.1c12.7,-12.7 33.3,-12.7 46,0C798.5,334.2 798.5,354.8 785.8,367.5z"
android:fillColor="#0362ff" />
</vector>

View File

@@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="80dp"
android:height="80dp"
android:viewportWidth="1024"
android:viewportHeight="1024">
<path
android:pathData="M512,12C235.9,12 12,235.9 12,512s223.9,500 500,500 500,-223.9 500,-500S788.1,12 512,12zM785.8,367.5 L455.7,697.7c-1.1,1.6 -1.8,3.4 -3.2,4.8 -6.6,6.6 -15.2,9.6 -23.8,9.4 -8.6,0.2 -17.3,-2.8 -23.8,-9.4 -1.4,-1.4 -2.1,-3.2 -3.2,-4.8l-163.5,-163.5c-12.7,-12.7 -12.7,-33.3 0,-46 12.7,-12.7 33.3,-12.7 46,0l144.5,144.5 311.1,-311.1c12.7,-12.7 33.3,-12.7 46,0C798.5,334.2 798.5,354.8 785.8,367.5z"
android:fillColor="#B4CBF3" />
</vector>

View File

@@ -45,7 +45,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
android:layout_margin="@dimen/dp_8"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/permission_card_background">
<ImageView
@@ -55,6 +57,7 @@
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/icon_permissions_storage"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -62,6 +65,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_auth0"
@@ -114,7 +118,8 @@
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
android:layout_margin="@dimen/dp_8"
android:background="@drawable/permission_card_background">
android:background="@drawable/permission_card_background"
android:visibility="gone">
<ImageView
android:id="@+id/iv_icon_1"
@@ -181,7 +186,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
android:layout_margin="@dimen/dp_8"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/permission_card_background">
<ImageView
@@ -191,6 +198,7 @@
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/icon_permissions_system"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -198,6 +206,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_auth2"
@@ -250,7 +259,8 @@
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
android:layout_margin="@dimen/dp_8"
android:background="@drawable/permission_card_background">
android:background="@drawable/permission_card_background"
android:visibility="gone">
<ImageView
android:id="@+id/iv_icon_3"
@@ -317,7 +327,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
android:layout_margin="@dimen/dp_8"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/permission_card_background">
<ImageView
@@ -327,6 +339,7 @@
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/icon_permissions_location"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -334,6 +347,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_auth4"
@@ -385,7 +399,9 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
android:layout_margin="@dimen/dp_8"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/permission_card_background">
<ImageView
@@ -395,6 +411,7 @@
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/icon_permissions_location"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -402,6 +419,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_auth5"
@@ -450,6 +468,78 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="@dimen/dp_64"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginTop="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/permission_card_background">
<ImageView
android:id="@+id/iv_icon_6"
android:layout_width="@dimen/dp_48"
android:layout_height="@dimen/dp_48"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/icon_permissions_location"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_8"
android:layout_marginEnd="@dimen/dp_8"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tv_auth6"
app:layout_constraintStart_toEndOf="@+id/iv_icon_6"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_name6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:maxLines="1"
android:text="通知权限"
android:textColor="@color/black"
android:textSize="@dimen/sp_14"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_directions6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_4"
android:maxLines="1"
android:text="查看设备位置"
android:textColor="@color/contact_text_color"
android:textSize="@dimen/sp_12"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_name6" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_auth6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_8"
android:background="@drawable/permission_auth_selector"
android:maxLines="1"
android:onClick="@{click::open_notification}"
android:text="去授权"
android:textColor="@drawable/tv_permission"
android:textSize="@dimen/sp_13"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</LinearLayout>
</ScrollView>

View File

@@ -2,7 +2,7 @@
<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".activity.ServiceActivity">
tools:context=".activity.service.ServiceActivity">
<data>
@@ -13,8 +13,9 @@
android:layout_height="wrap_content">
<ImageView
android:layout_width="@dimen/dp_320"
android:layout_height="@dimen/dp_200"
android:id="@+id/iv_qrcode"
android:layout_width="@dimen/dp_200"
android:layout_height="@dimen/dp_314"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/wechat_service"

View File

@@ -32,6 +32,7 @@
app:layout_constraintTop_toTopOf="parent">
<ImageView
android:id="@+id/imageView25"
android:layout_width="@dimen/dp_24"
android:layout_height="@dimen/dp_24"
android:layout_marginStart="@dimen/dp_8"
@@ -57,6 +58,23 @@
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_version"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_16"
android:gravity="center"
android:maxLines="1"
android:singleLine="true"
android:text="版本"
android:onClick="@{click::checkUpdate}"
android:textColor="@color/title_gray"
android:textSize="@dimen/sp_9"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/textView"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="@dimen/dp_8"
@@ -66,6 +84,7 @@
android:text="检查更新"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
android:visibility="gone"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@@ -135,8 +154,8 @@
android:layout_marginTop="@dimen/dp_8"
android:layout_marginBottom="@dimen/dp_8"
android:gravity="center"
android:maxLines="1"
android:maxLength="8"
android:maxLines="1"
android:singleLine="true"
android:text="@{TextUtils.isEmpty(userAvatarInfo.sn_name)?@string/default_nickname:userAvatarInfo.sn_name}"
android:textColor="@color/black"
@@ -151,7 +170,7 @@
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintBottom_toTopOf="@+id/tv_version"
app:layout_constraintBottom_toTopOf="@+id/tv_permission"
app:layout_constraintTop_toBottomOf="@+id/cl_avatar">
<RadioGroup
@@ -211,17 +230,20 @@
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/tv_version"
android:layout_width="match_parent"
android:id="@+id/tv_permission"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="@dimen/dp_12"
android:gravity="center"
android:layout_marginBottom="@dimen/dp_8"
android:background="@drawable/bt_checkupdate_bg"
android:maxLines="1"
android:singleLine="true"
android:text="版本"
android:textColor="@color/title_gray"
android:textSize="@dimen/sp_8"
app:layout_constraintBottom_toBottomOf="parent" />
android:onClick="@{click::checkPermission}"
android:text="权限设置"
android:textColor="@color/white"
android:textSize="@dimen/sp_10"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
<androidx.constraintlayout.widget.ConstraintLayout

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:background="@drawable/background_add"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">
<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="权限申请说明"
android:textColor="@color/black"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:layout_marginEnd="16dp"
android:layout_marginBottom="32dp"
app:layout_constraintBottom_toTopOf="@+id/linearLayout5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title">
<TextView
android:id="@+id/tv_content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textColor="@color/black"
android:textSize="18sp"
tools:text="内容文本" />
</ScrollView>
<LinearLayout
android:id="@+id/linearLayout5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:orientation="horizontal"
app:layout_constraintBottom_toBottomOf="parent">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="拒绝"
android:textColor="@color/black"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_content" />
<TextView
android:id="@+id/tv_confirm"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center"
android:text="同意"
android:textColor="@color/default_blue"
android:textSize="19sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="@+id/tv_content"
app:layout_constraintTop_toBottomOf="@+id/tv_content" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -33,11 +33,13 @@
android:id="@+id/iv_select"
android:layout_width="@dimen/dp_12"
android:layout_height="@dimen/dp_12"
android:layout_marginStart="@dimen/dp_26"
android:layout_marginTop="@dimen/dp_26"
android:adjustViewBounds="true"
android:scaleType="centerCrop"
android:src="@drawable/icon_unselect"
app:layout_constraintBottom_toBottomOf="@+id/iv_icon"
app:layout_constraintEnd_toEndOf="@+id/iv_icon" />
app:layout_constraintStart_toStartOf="@+id/iv_icon"
app:layout_constraintTop_toTopOf="@+id/iv_icon" />
<TextView
android:id="@+id/tv_appname"