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 9206d96..abcb601 100644
Binary files a/app/src/main/res/drawable-xhdpi/main_background.png and b/app/src/main/res/drawable-xhdpi/main_background.png differ
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
- 努力不为感动谁,只为不与最好的自己失之交臂。趁着最美好的年华,继续奋斗吧。新的一天。早安!
+ 努力不为感动谁,只为不与最好的自己失之交臂。趁着最美好的年华,继续奋斗吧。