From a5e8623bed352e735d4c0ac6c9e6412ad8170000 Mon Sep 17 00:00:00 2001 From: Fanhuitong <981964879@qq.com> Date: Mon, 6 Mar 2023 17:40:09 +0800 Subject: [PATCH] =?UTF-8?q?version:1.6=20fix:=20update:=E5=A2=9E=E5=8A=A04?= =?UTF-8?q?:3=E9=80=82=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 8 +- app/src/main/AndroidManifest.xml | 25 +- .../uiui/zyos/activity/PolicyActivity.java | 15 +- .../uiui/zyos/activity/main/MainActivity.java | 123 ++-- .../java/com/uiui/zyos/base/BaseActivity.java | 22 + .../com/uiui/zyos/base/BaseApplication.java | 18 + .../com/uiui/zyos/base/BaseLightActivity.java | 129 ++++ .../com/uiui/zyos/dialog/CustomDialog.java | 2 +- .../com/uiui/zyos/dialog/PasswordDialog.java | 2 +- .../uiui/zyos/dialog/PrivacyPolicyDialog.java | 12 +- .../com/uiui/zyos/dialog/SingleDialog.java | 2 +- .../uiui/zyos/fragment/user/UserFragment.java | 46 +- .../zyos/receiver/APKinstallReceiver.java | 23 + .../main/java/com/uiui/zyos/utils/Utils.java | 28 + .../res/drawable-xhdpi/main_background.png | Bin 10551 -> 10781 bytes .../main/res/layout-land/activity_main.xml | 1 - .../main/res/layout-land/fragment_biology.xml | 4 +- .../res/layout-land/fragment_chemical.xml | 1 + .../main/res/layout-land/fragment_chinese.xml | 1 + .../main/res/layout-land/fragment_complex.xml | 1 + .../main/res/layout-land/fragment_english.xml | 1 + .../main/res/layout-land/fragment_main.xml | 2 +- .../main/res/layout-land/fragment_math.xml | 1 + .../main/res/layout-land/fragment_physics.xml | 1 + .../res/layout-land/fragment_precision.xml | 1 + .../main/res/layout-land/fragment_subject.xml | 8 +- .../main/res/layout-land/fragment_user.xml | 44 +- .../main/res/layout-port/fragment_user.xml | 44 +- .../res/layout-sw800dp/fragment_biology.xml | 137 +++++ .../res/layout-sw800dp/fragment_chemical.xml | 137 +++++ .../res/layout-sw800dp/fragment_chinese.xml | 558 ++++++++++++++++++ .../res/layout-sw800dp/fragment_complex.xml | 518 ++++++++++++++++ .../res/layout-sw800dp/fragment_english.xml | 159 +++++ .../main/res/layout-sw800dp/fragment_main.xml | 297 ++++++++++ .../main/res/layout-sw800dp/fragment_math.xml | 511 ++++++++++++++++ .../res/layout-sw800dp/fragment_physics.xml | 136 +++++ .../res/layout-sw800dp/fragment_precision.xml | 130 ++++ .../res/layout-sw800dp/fragment_subject.xml | 38 ++ .../main/res/layout-sw800dp/fragment_user.xml | 446 ++++++++++++++ app/src/main/res/layout/activity_policy.xml | 1 + .../{custom_dialog.xml => dialog_custom.xml} | 0 ...assword_dialog.xml => dialog_password.xml} | 0 .../main/res/layout/dialog_privacy_policy.xml | 21 +- .../{single_dialog.xml => dialog_single.xml} | 0 app/src/main/res/values/strings.xml | 9 +- 45 files changed, 3540 insertions(+), 123 deletions(-) create mode 100644 app/src/main/java/com/uiui/zyos/base/BaseLightActivity.java create mode 100644 app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java create mode 100644 app/src/main/res/layout-sw800dp/fragment_biology.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_chemical.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_chinese.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_complex.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_english.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_main.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_math.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_physics.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_precision.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_subject.xml create mode 100644 app/src/main/res/layout-sw800dp/fragment_user.xml rename app/src/main/res/layout/{custom_dialog.xml => dialog_custom.xml} (100%) rename app/src/main/res/layout/{password_dialog.xml => dialog_password.xml} (100%) rename app/src/main/res/layout/{single_dialog.xml => dialog_single.xml} (100%) diff --git a/app/build.gradle b/app/build.gradle index 629e976..14a21db 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -16,8 +16,12 @@ android { applicationId "com.uiui.zyos" minSdkVersion 24 targetSdkVersion 29 - versionCode 6 - versionName "1.5" + /*TeclastMTK12*/ + versionCode 7 + versionName "1.6" +// /*展锐*/ +// versionCode 1 +// versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1b71f1f..d714e92 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -90,6 +90,9 @@ android:excludeFromRecents="true" android:screenOrientation="portrait" android:theme="@style/activity_styles" /> + + - + + + + + + + + + + + + + @@ -151,6 +170,7 @@ + - + + (); mUserFragment = new UserFragment(); @@ -239,23 +242,17 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, OpenApkUtils.getInstance().openAppWithoutArgs(JxwPackageConfig.JXW_DICTIONARY_PACKAGE_NAME, JxwPackageConfig.JXW_DICTIONARY_CLASS_NAME); } }); - } @Override public void initData() { registmNewAppReceiver(); - RemoteManager.setListener(new RemoteManager.ConnectedListener() { - @Override - public void onConnected() { - RemoteManager.getInstance().setDefaultDesktop(); - } - }); } @Override public void onConnected() { Log.e(TAG, "onConnected: "); + RemoteManager.getInstance().setDefaultDesktop(); } public static void toggleNotificationListenerService(Context context) { @@ -327,40 +324,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, if (agree == 0) { showPolicyDialog(); } else { - XXPermissions.with(this) - // 申请单个权限 -// .permission(Permission.RECORD_AUDIO) - // 申请多个权限 - .permission(Permission.Group.STORAGE) - // 设置权限请求拦截器(局部设置) - //.interceptor(new PermissionInterceptor()) - // 设置不触发错误检测机制(局部设置) - //.unchecked() - .request(new OnPermissionCallback() { - - @Override - public void onGranted(@NonNull List permissions, boolean allGranted) { - if (!allGranted) { - ToastUtil.show("获取部分权限成功,但部分权限未正常授予"); - return; - } -// ToastUtil.show("获取录音和日历权限成功"); - Log.e(TAG, "onGranted: 获取存储权限成功"); - getData(); - } - - @Override - public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { - if (doNotAskAgain) { - ToastUtil.show("被永久拒绝授权,请手动授予存储权限"); - // 如果是被永久拒绝就跳转到应用权限系统设置页面 - XXPermissions.startPermissionActivity(MainActivity.this, permissions); - } else { -// ToastUtil.show("获取录音和日历权限失败"); - Log.e(TAG, "onGranted: 获取存储权限权限失败"); - } - } - }); + getPermission(); } } @@ -394,7 +358,7 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, if (mNewAppReceiver != null) { unregisterReceiver(mNewAppReceiver); } - + RemoteManager.removeListener(this); } @Override @@ -430,6 +394,42 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, view.setVisibility(View.VISIBLE); } + private void getPermission() { + XXPermissions.with(this) + // 申请单个权限 +// .permission(Permission.RECORD_AUDIO) + // 申请多个权限 + .permission(Permission.Group.STORAGE) + // 设置权限请求拦截器(局部设置) + //.interceptor(new PermissionInterceptor()) + // 设置不触发错误检测机制(局部设置) + //.unchecked() + .request(new OnPermissionCallback() { + + @Override + public void onGranted(@NonNull List permissions, boolean allGranted) { + if (!allGranted) { + ToastUtil.show("获取部分权限成功,但部分权限未正常授予"); + return; + } +// ToastUtil.show("获取录音和日历权限成功"); + Log.e(TAG, "onGranted: 获取存储权限成功"); + getData(); + } + + @Override + public void onDenied(@NonNull List permissions, boolean doNotAskAgain) { + if (doNotAskAgain) { + ToastUtil.show("被永久拒绝授权,请手动授予存储权限"); + // 如果是被永久拒绝就跳转到应用权限系统设置页面 + XXPermissions.startPermissionActivity(MainActivity.this, permissions); + } else { +// ToastUtil.show("获取录音和日历权限失败"); + Log.e(TAG, "onGranted: 获取存储权限权限失败"); + } + } + }); + } private void getData() { // if (!isNotificationListenersEnabled()) { @@ -439,24 +439,29 @@ public class MainActivity extends BaseActivity implements MainContact.MainView, // addHomeWatcher(); } - private void showPolicyDialog() { - PrivacyPolicyDialog privacyPolicyDialog = new PrivacyPolicyDialog(this); - privacyPolicyDialog.setCancelable(false); - privacyPolicyDialog.setPrivacyPolicyCallback(new PrivacyPolicyDialog.PrivacyPolicyCallback() { - @Override - public void onCancel() { - privacyPolicyDialog.dismiss(); - finish(); - } + PrivacyPolicyDialog privacyPolicyDialog; - @Override - public void onConfirm() { - mMMKV.encode("AgreePrivacyPolicy", 1); - privacyPolicyDialog.dismiss(); - getData(); - } - }); - privacyPolicyDialog.show(); + private void showPolicyDialog() { + if (privacyPolicyDialog == null) { + privacyPolicyDialog = new PrivacyPolicyDialog(this); + privacyPolicyDialog.setCancelable(false); + privacyPolicyDialog.setPrivacyPolicyCallback(new PrivacyPolicyDialog.PrivacyPolicyCallback() { + @Override + public void onCancel() { + privacyPolicyDialog.dismiss(); + finish(); + } + + @Override + public void onConfirm() { + mMMKV.encode("AgreePrivacyPolicy", 1); + getPermission(); + privacyPolicyDialog.dismiss(); + getData(); + } + }); + privacyPolicyDialog.show(); + } } // private void addHomeWatcher() { diff --git a/app/src/main/java/com/uiui/zyos/base/BaseActivity.java b/app/src/main/java/com/uiui/zyos/base/BaseActivity.java index decd185..4766574 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseActivity.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseActivity.java @@ -1,6 +1,11 @@ package com.uiui.zyos.base; +import android.app.Activity; +import android.os.Build; import android.os.Bundle; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; import androidx.annotation.CallSuper; import androidx.annotation.CheckResult; @@ -72,10 +77,27 @@ public abstract class BaseActivity extends AppCompatActivity implements Lifecycl // .light(true) .apply(); setContentView(this.getLayoutId()); +// hideStatusBar(this); initView(); initData(); } +// public static void hideStatusBar(Activity activity) { +// if (activity == null) return; +// Window window = activity.getWindow(); +// if (window == null) return; +// window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, +// WindowManager.LayoutParams.FLAG_FULLSCREEN); +// window.getDecorView() +// .setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); +// WindowManager.LayoutParams lp = window.getAttributes(); +// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { +// lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES; +// } +// window.setAttributes(lp); +// } + + /** * 设置布局 */ diff --git a/app/src/main/java/com/uiui/zyos/base/BaseApplication.java b/app/src/main/java/com/uiui/zyos/base/BaseApplication.java index 0f365f1..bee5918 100644 --- a/app/src/main/java/com/uiui/zyos/base/BaseApplication.java +++ b/app/src/main/java/com/uiui/zyos/base/BaseApplication.java @@ -2,6 +2,7 @@ package com.uiui.zyos.base; import android.app.Application; import android.content.Intent; +import android.content.IntentFilter; import android.os.Handler; import android.os.Looper; import android.util.Log; @@ -20,6 +21,7 @@ import com.uiui.zyos.manager.ConnectManager; import com.uiui.zyos.manager.RemoteManager; import com.uiui.zyos.network.NetInterfaceManager; import com.uiui.zyos.push.PushManager; +import com.uiui.zyos.receiver.APKinstallReceiver; import com.uiui.zyos.service.main.MainService; import com.uiui.zyos.utils.AppUsedTimeUtils; import com.uiui.zyos.utils.OpenApkUtils; @@ -65,9 +67,25 @@ public class BaseApplication extends Application { ConnectManager.init(this); NetInterfaceManager.init(this); // startService(new Intent(this, MainService.class)); + registAppReceive(); } } + private APKinstallReceiver apKinstallReceiver; + + private void registAppReceive() { + if (null == apKinstallReceiver) { + apKinstallReceiver = new APKinstallReceiver(); + } + IntentFilter filter = new IntentFilter(); + filter.setPriority(IntentFilter.SYSTEM_HIGH_PRIORITY); + filter.addAction(Intent.ACTION_PACKAGE_ADDED); + filter.addAction(Intent.ACTION_PACKAGE_REPLACED); + filter.addAction(Intent.ACTION_PACKAGE_REMOVED); + filter.addDataScheme("package"); + registerReceiver(apKinstallReceiver, filter); + } + private void tpushInit() { XGPushConfig.enableDebug(this, true); XGPushManager.registerPush(this, new XGIOperateCallback() { diff --git a/app/src/main/java/com/uiui/zyos/base/BaseLightActivity.java b/app/src/main/java/com/uiui/zyos/base/BaseLightActivity.java new file mode 100644 index 0000000..3a5838c --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/base/BaseLightActivity.java @@ -0,0 +1,129 @@ +package com.uiui.zyos.base; + +import android.os.Bundle; + +import androidx.annotation.CallSuper; +import androidx.annotation.CheckResult; +import androidx.annotation.ContentView; +import androidx.annotation.LayoutRes; +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.AppCompatActivity; + +import com.trello.rxlifecycle4.LifecycleProvider; +import com.trello.rxlifecycle4.LifecycleTransformer; +import com.trello.rxlifecycle4.RxLifecycle; +import com.trello.rxlifecycle4.android.ActivityEvent; +import com.trello.rxlifecycle4.android.RxLifecycleAndroid; +import com.uiui.zyos.R; +import com.zackratos.ultimatebarx.ultimatebarx.java.UltimateBarX; + +import io.reactivex.rxjava3.core.Observable; +import io.reactivex.rxjava3.subjects.BehaviorSubject; + + +public abstract class BaseLightActivity extends AppCompatActivity implements LifecycleProvider { + public final BehaviorSubject lifecycleSubject = BehaviorSubject.create(); + + public BaseLightActivity() { + super(); + } + + @ContentView + public BaseLightActivity(@LayoutRes int contentLayoutId) { + super(contentLayoutId); + } + + @Override + @NonNull + @CheckResult + public final Observable lifecycle() { + return lifecycleSubject.hide(); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindUntilEvent(@NonNull ActivityEvent event) { + return RxLifecycle.bindUntilEvent(lifecycleSubject, event); + } + + @Override + @NonNull + @CheckResult + public final LifecycleTransformer bindToLifecycle() { + return RxLifecycleAndroid.bindActivity(lifecycleSubject); + } + + @Override + @CallSuper + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + lifecycleSubject.onNext(ActivityEvent.CREATE); +// StatusBarUtil.init(this); + UltimateBarX.statusBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + UltimateBarX.navigationBar(this) + .transparent() + .colorRes(R.color.colorPrimaryDark) + .light(true) + .apply(); + setContentView(this.getLayoutId()); + initView(); + initData(); + } + + /** + * 设置布局 + */ + public abstract int getLayoutId(); + + /** + * 初始化视图 + */ + public abstract void initView(); + + + /** + * 初始化数据 + */ + public abstract void initData(); + + @Override + @CallSuper + protected void onStart() { + super.onStart(); + lifecycleSubject.onNext(ActivityEvent.START); + } + + @Override + @CallSuper + protected void onResume() { + super.onResume(); + lifecycleSubject.onNext(ActivityEvent.RESUME); + } + + @Override + @CallSuper + protected void onPause() { + lifecycleSubject.onNext(ActivityEvent.PAUSE); + super.onPause(); + } + + @Override + @CallSuper + protected void onStop() { + lifecycleSubject.onNext(ActivityEvent.STOP); + super.onStop(); + } + + @Override + @CallSuper + protected void onDestroy() { + lifecycleSubject.onNext(ActivityEvent.DESTROY); + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/uiui/zyos/dialog/CustomDialog.java b/app/src/main/java/com/uiui/zyos/dialog/CustomDialog.java index 344e31a..13ae41b 100644 --- a/app/src/main/java/com/uiui/zyos/dialog/CustomDialog.java +++ b/app/src/main/java/com/uiui/zyos/dialog/CustomDialog.java @@ -67,7 +67,7 @@ public class CustomDialog extends AlertDialog { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.custom_dialog); + setContentView(R.layout.dialog_custom); //按空白处不能取消动画 setCanceledOnTouchOutside(false); //初始化界面控件 diff --git a/app/src/main/java/com/uiui/zyos/dialog/PasswordDialog.java b/app/src/main/java/com/uiui/zyos/dialog/PasswordDialog.java index 1a4038c..7fd29ce 100644 --- a/app/src/main/java/com/uiui/zyos/dialog/PasswordDialog.java +++ b/app/src/main/java/com/uiui/zyos/dialog/PasswordDialog.java @@ -69,7 +69,7 @@ public class PasswordDialog extends AlertDialog { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.password_dialog); + setContentView(R.layout.dialog_password); //按空白处不能取消动画 setCanceledOnTouchOutside(false); //初始化界面控件 diff --git a/app/src/main/java/com/uiui/zyos/dialog/PrivacyPolicyDialog.java b/app/src/main/java/com/uiui/zyos/dialog/PrivacyPolicyDialog.java index b02d067..3aa4551 100644 --- a/app/src/main/java/com/uiui/zyos/dialog/PrivacyPolicyDialog.java +++ b/app/src/main/java/com/uiui/zyos/dialog/PrivacyPolicyDialog.java @@ -65,20 +65,20 @@ public class PrivacyPolicyDialog extends AlertDialog { @Override public void onClick(@NonNull View widget) { Intent intent = new Intent(mContext, PolicyActivity.class); - intent.putExtra("content",R.raw.privacy_policy); + intent.putExtra("content", R.raw.privacy_policy); mContext.startActivity(intent); } - }, 115, 121, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - spannableString.setSpan(new ForegroundColorSpan(Color.BLUE), 115, 121, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + }, 89, 95, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + spannableString.setSpan(new ForegroundColorSpan(Color.BLUE), 89, 95, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); spannableString.setSpan(new ClickableSpan() { @Override public void onClick(@NonNull View widget) { Intent intent = new Intent(mContext, PolicyActivity.class); - intent.putExtra("content",R.raw.user_agreement); + intent.putExtra("content", R.raw.user_agreement); mContext.startActivity(intent); } - }, 122, 128, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - spannableString.setSpan(new ForegroundColorSpan(Color.BLUE), 122, 128, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + }, 96, 102, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + spannableString.setSpan(new ForegroundColorSpan(Color.BLUE), 96, 102, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // spannableString.setSpan(new ClickableSpan() { // @Override // public void onClick(@NonNull View widget) { diff --git a/app/src/main/java/com/uiui/zyos/dialog/SingleDialog.java b/app/src/main/java/com/uiui/zyos/dialog/SingleDialog.java index 573def3..d93d328 100644 --- a/app/src/main/java/com/uiui/zyos/dialog/SingleDialog.java +++ b/app/src/main/java/com/uiui/zyos/dialog/SingleDialog.java @@ -67,7 +67,7 @@ public class SingleDialog extends AlertDialog { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - setContentView(R.layout.single_dialog); + setContentView(R.layout.dialog_single); //按空白处不能取消动画 setCanceledOnTouchOutside(false); //初始化界面控件 diff --git a/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java b/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java index 20bf621..951840f 100644 --- a/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java +++ b/app/src/main/java/com/uiui/zyos/fragment/user/UserFragment.java @@ -6,6 +6,7 @@ import android.content.Intent; import android.content.IntentFilter; import android.graphics.Bitmap; import android.os.Bundle; +import android.provider.Settings; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; @@ -32,6 +33,7 @@ import com.uiui.zyos.bean.BaseResponse; import com.uiui.zyos.bean.DesktopIcon; import com.uiui.zyos.bean.SnInfo; import com.uiui.zyos.config.CommonConfig; +import com.uiui.zyos.utils.ApkUtils; import com.uiui.zyos.utils.TimeUtils; import com.uiui.zyos.utils.ToastUtil; import com.uiui.zyos.view.RecyclerViewSpacesItemDecoration; @@ -66,6 +68,8 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { ConstraintLayout cl_usedata; @BindView(R.id.tv_percent) TextView tv_percent; + @BindView(R.id.tv_activated) + TextView tv_activated; @BindView(R.id.tv_duration) TextView tv_duration; @BindView(R.id.cl_activation) @@ -86,6 +90,8 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { RecyclerView rv_app; @BindView(R.id.iv_nodata) ImageView iv_nodata; + @BindView(R.id.tv_activation) + TextView tv_activation; private AppAdapter mAppAdapter; @@ -105,7 +111,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { public UserFragment() { // Required empty public constructor - Log.e(TAG, "UserFragment: " ); + Log.e(TAG, "UserFragment: "); } /** @@ -192,6 +198,18 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { cl_activation.setVisibility(View.GONE); cl_app.setVisibility(View.VISIBLE); } + int is_activation = Settings.Global.getInt(mContext.getContentResolver(), CommonConfig.UIUI_ACTIVATION_KEY, 0); + if (is_activation != 1) { + tv_activation.setVisibility(View.VISIBLE); + } else { + tv_activation.setVisibility(View.GONE); + } + tv_activation.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + ApkUtils.openPackage(mContext, "com.uiui.zysn"); + } + }); String avatar = mMMKV.decodeString("USERINFO_AVATAR", ""); Glide.with(iv_avatar).load(avatar).error(R.drawable.default_avatar).into(iv_avatar); tv_date1.setText(TimeUtils.getDateAndWeek(System.currentTimeMillis())); @@ -264,6 +282,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { case 300: //设备没有绑定 case 400://没有授权的设备 case 403://设备归属不存在 + case 402://sn不存在 tv_name.setText(getString(R.string.unbind)); tv_grade.setText(getString(R.string.notset)); cl_nodata.setVisibility(View.VISIBLE); @@ -271,16 +290,15 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { cl_activation.setVisibility(View.VISIBLE); cl_app.setVisibility(View.GONE); break; - case 402://sn不存在 - ToastUtil.show(getString(R.string.device_unauthorized)); - Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized)); - tv_name.setText(getString(R.string.device_unauthorized)); - tv_grade.setText(getString(R.string.device_unauthorized)); - cl_nodata.setVisibility(View.GONE); - cl_usedata.setVisibility(View.GONE); - cl_activation.setVisibility(View.GONE); - cl_app.setVisibility(View.GONE); - break; +// ToastUtil.show(getString(R.string.device_unauthorized)); +// Log.e(TAG, "setSnInfo: " + getString(R.string.device_unauthorized)); +// tv_name.setText(getString(R.string.device_unauthorized)); +// tv_grade.setText(getString(R.string.device_unauthorized)); +// cl_nodata.setVisibility(View.GONE); +// cl_usedata.setVisibility(View.GONE); +// cl_activation.setVisibility(View.GONE); +// cl_app.setVisibility(View.GONE); +// break; default: } } @@ -385,7 +403,7 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { private UpdateDesktopReceiver updateDesktopReceiver; - private static final String UPDATE_DESKTOP_ICON_ACTION ="UPDATE_DESKTOP_ICON"; + public static final String UPDATE_DESKTOP_ICON_ACTION = "UPDATE_DESKTOP_ICON"; private void registerUpdateDesktopReceiver() { if (updateDesktopReceiver == null) { @@ -403,10 +421,10 @@ public class UserFragment extends BaseFragment implements UserContact.UserView { public void onReceive(Context context, Intent intent) { String action = intent.getAction(); Log.e("UpdateDesktopReceiver", "onReceive: " + action); - if (TextUtils.isEmpty(action)){ + if (TextUtils.isEmpty(action)) { return; } - if (UPDATE_DESKTOP_ICON_ACTION.equals(action)){ + if (UPDATE_DESKTOP_ICON_ACTION.equals(action)) { mPresenter.getInstalledApp(); } } diff --git a/app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java b/app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java new file mode 100644 index 0000000..8be6ee1 --- /dev/null +++ b/app/src/main/java/com/uiui/zyos/receiver/APKinstallReceiver.java @@ -0,0 +1,23 @@ +package com.uiui.zyos.receiver; + +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.util.Log; + +import com.uiui.zyos.fragment.user.UserFragment; + +public class APKinstallReceiver extends BroadcastReceiver { + + private static final String TAG = APKinstallReceiver.class.getSimpleName(); + + @Override + public void onReceive(final Context context, Intent intent) { + // an Intent broadcast. + String packageName = intent.getDataString().replace("package:", ""); + Log.e(TAG, "onReceive: " + packageName + ": " + intent.getAction()); + Intent updateIntent = new Intent(UserFragment.UPDATE_DESKTOP_ICON_ACTION); + intent.setPackage("com.uiui.zyos"); + context.sendBroadcast(updateIntent); + } +} diff --git a/app/src/main/java/com/uiui/zyos/utils/Utils.java b/app/src/main/java/com/uiui/zyos/utils/Utils.java index 042ef51..61e0c0f 100644 --- a/app/src/main/java/com/uiui/zyos/utils/Utils.java +++ b/app/src/main/java/com/uiui/zyos/utils/Utils.java @@ -15,7 +15,9 @@ import android.os.BatteryManager; import android.os.Build; import android.os.Environment; import android.os.PowerManager; +import android.util.DisplayMetrics; import android.util.Log; +import android.view.WindowManager; import androidx.core.content.ContextCompat; @@ -64,6 +66,32 @@ public class Utils { // return serial; // } + public static String getAndroiodScreenProperty(Context context) { + Log.e("getAndroiodScreenProperty", "heightPixels:" + context.getResources().getDisplayMetrics().heightPixels); + Log.e("getAndroiodScreenProperty", "widthPixels:" + context.getResources().getDisplayMetrics().widthPixels); + Log.e("getAndroiodScreenProperty", "density:" + context.getResources().getDisplayMetrics().density); + Log.e("getAndroiodScreenProperty", "densityDpi:" + context.getResources().getDisplayMetrics().densityDpi); + + WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); + DisplayMetrics dm = new DisplayMetrics(); + wm.getDefaultDisplay().getRealMetrics(dm); + int width = dm.widthPixels; // 屏幕宽度(像素) + int height = dm.heightPixels; // 屏幕高度(像素) + float density = dm.density; // 屏幕密度(0.75 / 1.0 / 1.5) + int densityDpi = dm.densityDpi; // 屏幕密度dpi(120 / 160 / 240) + // 屏幕宽度算法:屏幕宽度(像素)/屏幕密度 + int screenWidth = (int) (width / density); // 屏幕宽度(dp) + int screenHeight = (int) (height / density);// 屏幕高度(dp) + + Log.e("getAndroiodScreenProperty", "屏幕宽度(像素):" + width); + Log.e("getAndroiodScreenProperty", "屏幕高度(像素):" + height); + Log.e("getAndroiodScreenProperty", "屏幕密度(0.75 / 1.0 / 1.5):" + density); + Log.e("getAndroiodScreenProperty", "屏幕密度dpi(120 / 160 / 240):" + densityDpi); + Log.e("getAndroiodScreenProperty", "屏幕宽度(dp):" + screenWidth); + Log.e("getAndroiodScreenProperty", "屏幕高度(dp):" + screenHeight); + return width + "×" + height; + } + public static String getDeviceSN() { String serial = null; try { diff --git a/app/src/main/res/drawable-xhdpi/main_background.png b/app/src/main/res/drawable-xhdpi/main_background.png index 9206d965d056b7b7f0341c47ae374da7a9474bce..abcb60115fc148415b22990ca847399d73c655eb 100644 GIT binary patch literal 10781 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 diff --git a/app/src/main/res/layout-land/activity_main.xml b/app/src/main/res/layout-land/activity_main.xml index 1eafadc..3be92a0 100644 --- a/app/src/main/res/layout-land/activity_main.xml +++ b/app/src/main/res/layout-land/activity_main.xml @@ -46,7 +46,6 @@ android:layout_marginTop="@dimen/dp_4" android:layout_marginEnd="@dimen/dp_4" android:layout_marginStart="@dimen/dp_4" - android:layout_marginBottom="@dimen/dp_2" android:orientation="horizontal" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" diff --git a/app/src/main/res/layout-land/fragment_biology.xml b/app/src/main/res/layout-land/fragment_biology.xml index d458f33..900f270 100644 --- a/app/src/main/res/layout-land/fragment_biology.xml +++ b/app/src/main/res/layout-land/fragment_biology.xml @@ -15,8 +15,10 @@ android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintHorizontal_bias="0.5" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintVertical_bias="0.35"> diff --git a/app/src/main/res/layout-land/fragment_english.xml b/app/src/main/res/layout-land/fragment_english.xml index 31cf328..01f21d5 100644 --- a/app/src/main/res/layout-land/fragment_english.xml +++ b/app/src/main/res/layout-land/fragment_english.xml @@ -13,6 +13,7 @@ diff --git a/app/src/main/res/layout-land/fragment_subject.xml b/app/src/main/res/layout-land/fragment_subject.xml index 3f9b01f..eb96d5f 100644 --- a/app/src/main/res/layout-land/fragment_subject.xml +++ b/app/src/main/res/layout-land/fragment_subject.xml @@ -15,6 +15,7 @@ android:layout_width="@dimen/dp_380" android:layout_height="@dimen/dp_24" android:layout_marginStart="@dimen/dp_8" + android:layout_marginTop="@dimen/dp_2" android:visibility="visible" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" @@ -23,10 +24,10 @@ app:tl_indicator_margin_right="2dp" app:tl_indicator_style="NORMAL" app:tl_tab_space_equal="true" - app:tl_textSelectSize="@dimen/sp_15" - app:tl_textUnSelectSize="@dimen/sp_12" app:tl_textBold="SELECT" - app:tl_textSize="@dimen/sp_12" /> + app:tl_textSelectSize="@dimen/sp_15" + app:tl_textSize="@dimen/sp_12" + app:tl_textUnSelectSize="@dimen/sp_12" /> - \ No newline at end of file diff --git a/app/src/main/res/layout-land/fragment_user.xml b/app/src/main/res/layout-land/fragment_user.xml index ce3fa4d..ada21b0 100644 --- a/app/src/main/res/layout-land/fragment_user.xml +++ b/app/src/main/res/layout-land/fragment_user.xml @@ -102,9 +102,9 @@ @@ -121,7 +121,7 @@ android:id="@+id/cl_nodata" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="gone"> + android:visibility="visible"> + + + android:visibility="visible"> + + @@ -121,7 +121,7 @@ android:id="@+id/cl_nodata" android:layout_width="match_parent" android:layout_height="match_parent" - android:visibility="gone"> + android:visibility="visible"> + + + android:visibility="visible"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_chemical.xml b/app/src/main/res/layout-sw800dp/fragment_chemical.xml new file mode 100644 index 0000000..ed2b718 --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_chemical.xml @@ -0,0 +1,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_chinese.xml b/app/src/main/res/layout-sw800dp/fragment_chinese.xml new file mode 100644 index 0000000..05629b3 --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_chinese.xml @@ -0,0 +1,558 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_complex.xml b/app/src/main/res/layout-sw800dp/fragment_complex.xml new file mode 100644 index 0000000..da8c763 --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_complex.xml @@ -0,0 +1,518 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_english.xml b/app/src/main/res/layout-sw800dp/fragment_english.xml new file mode 100644 index 0000000..01f21d5 --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_english.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_main.xml b/app/src/main/res/layout-sw800dp/fragment_main.xml new file mode 100644 index 0000000..47745cc --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_main.xml @@ -0,0 +1,297 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_math.xml b/app/src/main/res/layout-sw800dp/fragment_math.xml new file mode 100644 index 0000000..d5de6da --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_math.xml @@ -0,0 +1,511 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_physics.xml b/app/src/main/res/layout-sw800dp/fragment_physics.xml new file mode 100644 index 0000000..3b69bf3 --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_physics.xml @@ -0,0 +1,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_precision.xml b/app/src/main/res/layout-sw800dp/fragment_precision.xml new file mode 100644 index 0000000..a4c2adb --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_precision.xml @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_subject.xml b/app/src/main/res/layout-sw800dp/fragment_subject.xml new file mode 100644 index 0000000..eb96d5f --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_subject.xml @@ -0,0 +1,38 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout-sw800dp/fragment_user.xml b/app/src/main/res/layout-sw800dp/fragment_user.xml new file mode 100644 index 0000000..9351873 --- /dev/null +++ b/app/src/main/res/layout-sw800dp/fragment_user.xml @@ -0,0 +1,446 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_policy.xml b/app/src/main/res/layout/activity_policy.xml index c14f26e..bb7b71b 100644 --- a/app/src/main/res/layout/activity_policy.xml +++ b/app/src/main/res/layout/activity_policy.xml @@ -3,6 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="@color/white" tools:context=".activity.PolicyActivity"> + android:textSize="@dimen/sp_9" /> @@ -76,13 +75,11 @@ android:layout_weight="1" android:gravity="center" android:text="同意" - android:textStyle="bold" android:textColor="@color/default_blue" - android:textSize="@dimen/sp_12" + android:textSize="@dimen/sp_10" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="@+id/tv_content" app:layout_constraintTop_toBottomOf="@+id/tv_content" /> - \ No newline at end of file diff --git a/app/src/main/res/layout/single_dialog.xml b/app/src/main/res/layout/dialog_single.xml similarity index 100% rename from app/src/main/res/layout/single_dialog.xml rename to app/src/main/res/layout/dialog_single.xml diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 88b290d..e946bee 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -3,11 +3,8 @@ 隐私协议 服务协议和隐私政策 - 请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了向你提供即时通讯,内容分享等服务, - 我们需要收集你的设备信息、操作日志等个人信息。你可以在“设置”中查看、变更、删除个人信息并管理你的授权。 - \n你可阅读《服务协议》,《隐私政策》了解详细信息。如你同意,请点击“同意”开始接受我们的服务 - - + \t\t\t\t请你务必审慎阅读、充分理解“服务协议”和“隐私政策”各条款,包括但不限于:为了向你提供即时通讯,内容分享等服务, + 我们需要收集你的设备信息、操作日志等个人信息。\n你可阅读《服务协议》,《隐私政策》了解详细信息。如你同意,请点击“同意”开始接受我们的服务 未绑定 未设置 设备未经授权 @@ -16,6 +13,6 @@ Hello blank fragment - 努力不为感动谁,只为不与最好的自己失之交臂。趁着最美好的年华,继续奋斗吧。新的一天。早安! + 努力不为感动谁,只为不与最好的自己失之交臂。趁着最美好的年华,继续奋斗吧。