Commit 8e1d1d33 by Baoxy

fix: 完成需求

1.新增密保 2.输入密码时需要两次确认
parent 7fee0f44
......@@ -69,7 +69,7 @@
android:exported="true" />
<activity
android:name=".function.setting.ChangePwdActivity"
android:name=".function.pwd.ChangePwdActivity"
android:excludeFromRecents="true"
android:theme="@style/SettingTheme" />
......@@ -98,7 +98,7 @@
android:excludeFromRecents="true"
android:theme="@style/SettingTheme" />
<activity
android:name=".function.setting.SettingPwdActivity"
android:name=".function.pwd.SettingPwdActivity"
android:excludeFromRecents="true"
android:theme="@style/SettingTheme" />
<activity
......@@ -110,6 +110,11 @@
android:excludeFromRecents="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".function.pwd.EncryptedActivity"
android:excludeFromRecents="true"
android:theme="@style/Theme.AppCompat.Light.NoActionBar" />
<activity
android:name=".function.setting.AppChooseActivity"
android:excludeFromRecents="true"
android:resizeableActivity="false"
......
......@@ -147,6 +147,7 @@ dependencies {
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.1.1'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation "com.qmuiteam:qmui:1.3.0"
implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.61"
// implementation 'com.dou361.dialogui:jjdxm-dialogui:1.0.2'
}
......
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!--按下点击-->
<item android:state_enabled="true" android:state_pressed="true">
<shape>
<stroke
android:width="1px"
android:color="#B22d80df" />
<solid android:color="#B22d80df" />
</shape>
</item>
<!--正常状态-->
<item android:state_enabled="false" android:state_pressed="false">
<shape>
<stroke
android:width="1px"
android:color="#B22d80df" />
<solid android:color="#662d80df" />
</shape>
</item>
</selector>
\ No newline at end of file
......@@ -5,7 +5,7 @@
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"
tools:context="com.android.launcher3.function.setting.ChangePwdActivity">
tools:context="com.android.launcher3.function.pwd.ChangePwdActivity">
<TextView
android:id="@+id/tv_setting_title"
......@@ -28,6 +28,8 @@
android:background="#FFFFFF"
android:hint="@string/edu_item_input_oldpwd"
android:paddingLeft="16dp"
android:maxLines="1"
android:maxLength="20"
android:paddingRight="16dp"
android:textColor="#363636"
android:inputType="textPassword"
......@@ -45,6 +47,8 @@
android:layout_height="48dp"
android:background="#FFFFFF"
android:hint="@string/edu_item_input_newpwd"
android:maxLines="1"
android:maxLength="20"
android:paddingLeft="16dp"
android:inputType="textPassword"
android:paddingRight="16dp"
......@@ -64,6 +68,8 @@
android:background="#FFFFFF"
android:inputType="textPassword"
android:hint="@string/edu_item_input_newpwd_again"
android:maxLines="1"
android:maxLength="20"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#363636"
......@@ -93,7 +99,7 @@
android:layout_height="48dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@drawable/btn_select"
android:background="@drawable/ripple_bg"
android:elevation="3dp"
android:onClick="btnClick"
android:gravity="center"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"
tools:context="com.android.launcher3.function.pwd.ChangePwdActivity">
<FrameLayout
android:id="@+id/ll_encrypted_parent"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</LinearLayout>
\ No newline at end of file
......@@ -41,16 +41,16 @@
<EditText
android:id="@+id/edit_pwd"
android:layout_width="0dp"
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:hint="请输入密码"
android:inputType="textPassword"
android:maxLength="16"
android:maxLines="1"
android:padding="12dp"
android:textColorHint="#c2c2c2"
android:textColor="#c2c2c2"
android:textColorHint="#c2c2c2"
android:textSize="16dp" />
<CheckBox
......@@ -63,6 +63,42 @@
android:checked="true" />
</LinearLayout>
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#c2c2c2"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#ffffff"
android:orientation="horizontal">
<EditText
android:id="@+id/edit_pwd_again"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@null"
android:hint="请再次输入密码"
android:inputType="textPassword"
android:maxLength="16"
android:maxLines="1"
android:padding="12dp"
android:textColor="#c2c2c2"
android:textColorHint="#c2c2c2"
android:textSize="16dp" />
<CheckBox
android:id="@+id/cb_show_pwd_again"
android:layout_width="40dp"
android:layout_height="25dp"
android:layout_centerVertical="true"
android:layout_marginRight="20dp"
android:button="@drawable/cb_selector"
android:checked="true" />
</LinearLayout>
<Button
android:id="@+id/btn_sure"
android:layout_width="match_parent"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<TextView
android:id="@+id/tv_setting_title"
android:layout_width="match_parent"
android:layout_height="48dp"
android:drawableStart="@mipmap/ic_back"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:onClick="close"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="@string/edu_item_about"
android:textColor="#363636"
android:textSize="16sp" />
<EditText
android:id="@+id/et_question1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#FFFFFF"
android:hint="@string/edu_item_input_encryted_question1"
android:maxLength="50"
android:maxLines="1"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#363636"
android:textColorHint="#8D8D8D"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<EditText
android:id="@+id/et_answer1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#FFFFFF"
android:hint="@string/edu_item_input_encryted_answer1"
android:maxLength="50"
android:maxLines="1"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#363636"
android:textColorHint="#8D8D8D"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<EditText
android:id="@+id/et_question2"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#FFFFFF"
android:hint="@string/edu_item_input_encryted_question2"
android:maxLength="50"
android:maxLines="1"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#363636"
android:textColorHint="#8D8D8D"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<EditText
android:id="@+id/et_answer2"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#FFFFFF"
android:hint="@string/edu_item_input_encryted_answer2"
android:maxLength="50"
android:maxLines="1"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#363636"
android:textColorHint="#8D8D8D"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<Button
android:id="@+id/btn_encrypted_set"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@drawable/ripple_bg"
android:elevation="3dp"
android:gravity="center"
android:text="@string/common_sure"
android:textColor="#fafafa"
android:textSize="16sp" />
</LinearLayout>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical">
<TextView
android:id="@+id/tv_setting_title"
android:layout_width="match_parent"
android:layout_height="48dp"
android:drawableStart="@mipmap/ic_back"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:onClick="close"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="@string/edu_item_about"
android:textColor="#363636"
android:textSize="16sp" />
<TextView
android:id="@+id/tv_question1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="@string/edu_item_input_encryted_question1"
android:textColor="#363636"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<EditText
android:id="@+id/et_answer1"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#FFFFFF"
android:hint="@string/edu_item_input_encryted_answer1"
android:maxLines="1"
android:maxLength="50"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#363636"
android:textColorHint="#8D8D8D"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<TextView
android:id="@+id/tv_question2"
android:layout_width="match_parent"
android:layout_height="48dp"
android:drawablePadding="10dp"
android:gravity="center_vertical"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:text="@string/edu_item_input_encryted_question1"
android:textColor="#363636"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<EditText
android:id="@+id/et_answer2"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="#FFFFFF"
android:hint="@string/edu_item_input_encryted_answer2"
android:maxLines="1"
android:maxLength="50"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:textColor="#363636"
android:textColorHint="#8D8D8D"
android:textSize="16sp" />
<View
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#DDDFE1" />
<Button
android:id="@+id/btn_encrypted_set"
style="@style/Widget.AppCompat.Button.Borderless"
android:layout_width="match_parent"
android:layout_height="48dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:background="@drawable/ripple_bg"
android:elevation="3dp"
android:gravity="center"
android:text="@string/common_sure"
android:textColor="#fafafa"
android:textSize="16sp" />
</LinearLayout>
......@@ -361,5 +361,23 @@
<string name="edu_item_input_pwd_different">两次输入密码不一致,请重新输入</string>
<string name="edu_item_input_pwd_change_success">密码修改成功</string>
<string name="edu_item_input_encryted_set">设置密保</string>
<string name="edu_item_input_encryted_verfiy">验证密保</string>
<string name="edu_item_input_encryted_question1">问题一</string>
<string name="edu_item_input_encryted_question2">问题二</string>
<string name="edu_item_input_encryted_answer1">答案一</string>
<string name="edu_item_input_encryted_answer2">答案二</string>
<string name="edu_item_input_question_null">问题为空</string>
<string name="edu_item_input_answer_null">答案为空</string>
<string name="edu_item_input_encryted_set_success">密保设置成功</string>
<string name="edu_item_input_encryted_ver_success">密保验证成功</string>
<string name="edu_item_input_encryted_error">未获取到密保答案</string>
<string name="edu_item_input_answer1_error">问题一答案错误</string>
<string name="edu_item_input_answer2_error">问题二答案错误</string>
<string name="edu_item_input_encryted_title">请输入密保答案</string>
</resources>
......@@ -61,7 +61,7 @@ import android.os.SystemClock;
import android.os.Trace;
import android.os.UserHandle;
import android.support.annotation.Nullable;
import android.text.InputType;
import android.text.Editable;
import android.text.Selection;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
......@@ -160,6 +160,7 @@ import com.secspace.lib.common.event.RefreshWorkSpaceEvent;
import com.secspace.lib.common.function.ActivationHelper;
import com.secspace.lib.common.function.DialogManager;
import com.secspace.lib.common.function.WorkManager;
import com.secspace.lib.common.function.model.Encrypted;
import com.secspace.lib.common.update.CheckUpdateCore;
import com.secspace.lib.common.utils.ActivityHelper;
import com.secspace.lib.common.utils.DeviceUtil;
......@@ -168,8 +169,10 @@ import com.secspace.lib.common.utils.FileUtil;
import com.secspace.lib.common.utils.ImeiCheckUtils;
import com.secspace.lib.common.utils.InputUtil;
import com.secspace.lib.common.utils.IntentUtil;
import com.secspace.lib.common.utils.JsonUtil;
import com.secspace.lib.common.utils.Prefs;
import com.secspace.lib.common.utils.ToastUtil;
import com.secspace.lib.common.utils.UtilsKt;
import com.secspace.mdmengine.api.manager.MdmFactoryManager;
import org.greenrobot.eventbus.EventBus;
......@@ -406,6 +409,8 @@ public class Launcher extends BaseActivity
private RotationPrefChangeHandler mRotationPrefChangeHandler;
private String mWallpaperPath;
private String question;
private String answer1;
@Override
protected void onCreate(Bundle savedInstanceState) {
......@@ -1200,36 +1205,14 @@ public class Launcher extends BaseActivity
if (mLauncherCallbacks != null) {
mLauncherCallbacks.onResume();
}
ActivationHelper.INSTANCE.active(this, new ActivationHelper.ActivationListener() {
@Override
public void activationFailed() {
DialogManager.INSTANCE.showActivateLoseDialog(Launcher.this, getString(R.string.common_remind)
, getString(R.string.dialog_tip_activate_lose), new DialogManager.MessageListener() {
@Override
public void onPositive() {
IntentUtil.startHomeIntent(Launcher.this);
}
@Override
public void onNegative() {
}
})
;
}
@Override
public void activated() {
WorkManager.INSTANCE.enter(Launcher.this);
}
}, false);
WorkManager.INSTANCE.enter(Launcher.this);
}
public static void forceReload(){
public static void forceReload() {
LauncherAppState app = LauncherAppState.getInstanceNoCreate();
if (app != null) {
LauncherModel model = app.getModel();
if(model != null){
if (model != null) {
model.forceReload();
}
}
......@@ -3124,12 +3107,17 @@ public class Launcher extends BaseActivity
}
private void showPwdDialog() {
DialogManager.INSTANCE.showPwdDialog(this, "请输入密码" ,new DialogManager.PwdListener(){
DialogManager.INSTANCE.showPwdDialog(this, "请输入密码", new DialogManager.PwdCanVerListener() {
@Override
public void onNeutral() {
showEncryptedVerDialog();
}
@Override
public void onPositive(View view) {
InputUtil.closeSoftInput(getApplicationContext(), view);
if (TextUtils.equals(((EditText)view).getText().toString(), Prefs.getLoginPwd(mAppContext))) {
if (TextUtils.equals(((EditText) view).getText().toString(), Prefs.getLoginPwd(mAppContext))) {
IntentUtil.startExitService(mAppContext);
} else {
DialogUIUtils.showToastCenter("密码错误");
......@@ -3143,6 +3131,51 @@ public class Launcher extends BaseActivity
});
}
private void showEncryptedVerDialog() {
String encryptedStr = Prefs.getEncrypted(mAppContext);
if (TextUtils.isEmpty(encryptedStr)) {
DialogUIUtils.showToastCenter("请先设置密保");
return;
}
Encrypted encrypted = JsonUtil.fromJson(encryptedStr, Encrypted.class);
if (TextUtils.equals(encrypted.getQuestion1(), question)) {
question = encrypted.getQuestion2();
answer1 = encrypted.getAnswer2();
} else {
question = encrypted.getQuestion1();
answer1 = encrypted.getAnswer1();
}
DialogManager.INSTANCE.showEncryptedVerDialog(this, getString(R.string.edu_item_input_encryted_title), question, new DialogManager.PwdListener() {
@Override
public void onPositive(View view) {
InputUtil.closeSoftInput(getApplicationContext(), view);
EditText editText = (EditText) view;
Editable editable = editText.getText();
if (editable == null || TextUtils.isEmpty(editable.toString())) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_encryted_title);
return;
}
String answer = editable.toString();
answer = UtilsKt.encrypt(answer);
if (TextUtils.equals(answer1, answer)) {
Intent intent = new Intent(mAppContext, PwdPinSetPwdActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return;
}
DialogUIUtils.showToastCenter("密保答案错误");
}
@Override
public void onNegative() {
showEncryptedVerDialog();
}
});
}
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
mLastDispatchTouchEventX = ev.getX();
......
......@@ -5,21 +5,29 @@ import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextUtils;
import android.view.View;
import android.widget.EditText;
import com.android.launcher3.function.pwd.PwdPinSetPwdActivity;
import com.android.launcher3.function.setting.SettingAdminActivity;
import com.android.launcher3.settings.ErrorTimeHelper;
import com.secspace.lib.common.dialog.other.DialogUIUtils;
import com.secspace.lib.common.function.DialogManager;
import com.secspace.lib.common.function.model.Encrypted;
import com.secspace.lib.common.utils.InputUtil;
import com.secspace.lib.common.utils.JsonUtil;
import com.secspace.lib.common.utils.Prefs;
import com.secspace.lib.common.utils.ToastUtil;
import com.secspace.lib.common.utils.UtilsKt;
public class ManagerAuthActivity extends BaseActivity {
protected Context mAppContext;
private String question;
private String answer1;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
......@@ -29,14 +37,19 @@ public class ManagerAuthActivity extends BaseActivity {
}
private void showPwdDialog() {
DialogManager.INSTANCE.showPwdDialog(this, "请输入密码" ,new DialogManager.PwdListener(){
DialogManager.INSTANCE.showPwdDialog(this, "请输入密码", new DialogManager.PwdCanVerListener() {
@Override
public void onNeutral() {
showEncryptedVerDialog();
}
@Override
public void onPositive(View view) {
EditText editText = (EditText) view;
InputUtil.closeSoftInput(getApplicationContext(), editText);
boolean canInputPwd = ErrorTimeHelper.getInstance(mAppContext).canInputPwd();
if (canInputPwd){
if (canInputPwd) {
if (TextUtils.equals(editText.getText().toString(), Prefs.getLoginPwd(mAppContext))) {
finish();
ErrorTimeHelper.getInstance(mAppContext).resetLockTimeAndCount();
......@@ -48,14 +61,63 @@ public class ManagerAuthActivity extends BaseActivity {
ErrorTimeHelper.getInstance(mAppContext).addErrorCount();
finish();
}
}else {
ToastUtil.showShort(mAppContext,"请在"+ ErrorTimeHelper.getInstance(mAppContext).getCountDownTime()+"秒后重试");
} else {
ToastUtil.showShort(mAppContext, "请在" + ErrorTimeHelper.getInstance(mAppContext).getCountDownTime() + "秒后重试");
finish();
}
}
@Override
public void onNegative() {
finish();
}
});
}
private void showEncryptedVerDialog() {
String encryptedStr = Prefs.getEncrypted(mAppContext);
if (TextUtils.isEmpty(encryptedStr)) {
DialogUIUtils.showToastCenter("请先设置密保");
finish();
return;
}
Encrypted encrypted = JsonUtil.fromJson(encryptedStr, Encrypted.class);
if (TextUtils.equals(encrypted.getQuestion1(), question)) {
question = encrypted.getQuestion2();
answer1 = encrypted.getAnswer2();
} else {
question = encrypted.getQuestion1();
answer1 = encrypted.getAnswer1();
}
DialogManager.INSTANCE.showEncryptedVerDialog(this, getString(R.string.edu_item_input_encryted_title), question, new DialogManager.PwdListener() {
@Override
public void onPositive(View view) {
EditText editText = (EditText) view;
InputUtil.closeSoftInput(getApplicationContext(), editText);
Editable editable = editText.getText();
if (editable == null || TextUtils.isEmpty(editable.toString())) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_encryted_title);
finish();
return;
}
String answer = editable.toString();
answer = UtilsKt.encrypt(answer);
if (TextUtils.equals(answer1, answer)) {
Intent intent = new Intent(mAppContext, PwdPinSetPwdActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish();
return;
}
DialogUIUtils.showToastCenter("密保答案错误");
finish();
}
@Override
public void onNegative() {
showEncryptedVerDialog();
}
});
}
......
package com.android.launcher3.function.setting
package com.android.launcher3.function.pwd
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.SpannableString
import android.text.Spanned
......@@ -12,16 +13,22 @@ import android.view.inputmethod.InputMethodManager
import android.widget.EditText
import com.android.launcher3.BaseActivity
import com.android.launcher3.R
import com.android.launcher3.function.pwd.PwdPinSetPwdActivity
import com.android.launcher3.settings.ErrorTimeHelper
import com.secspace.lib.common.dialog.other.DialogUIUtils
import com.secspace.lib.common.function.DialogManager
import com.secspace.lib.common.function.model.Encrypted
import com.secspace.lib.common.utils.InputUtil
import com.secspace.lib.common.utils.JsonUtil
import com.secspace.lib.common.utils.Prefs
import com.secspace.lib.common.utils.encrypt
import kotlinx.android.synthetic.main.activity_change_pwd.*
import kotlinx.android.synthetic.main.activity_setting.tv_setting_title
class ChangePwdActivity : BaseActivity() {
private var mContext: Context? = null
private var question: String? = null
private var answer1: String? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
......@@ -38,7 +45,7 @@ class ChangePwdActivity : BaseActivity() {
setHintSize(et_new_pwd_again, getString(R.string.edu_item_input_newpwd_again))
tv_confir_pwd_protection.setOnClickListener {
DialogUIUtils.showToastCenter(R.string.edu_toast_wait)
showEncryptedVerDialog()
}
}
......@@ -87,6 +94,46 @@ class ChangePwdActivity : BaseActivity() {
finish()
}
private fun showEncryptedVerDialog() {
val encryptedStr = Prefs.getEncrypted(mAppContext)
if (TextUtils.isEmpty(encryptedStr)) {
DialogUIUtils.showToastCenter("请先设置密保")
return
}
val (question1, answer11, question2, answer2) = JsonUtil.fromJson(encryptedStr, Encrypted::class.java)
if (TextUtils.equals(question1, question)) {
question = question2
answer1 = answer2
} else {
question = question1
answer1 = answer11
}
DialogManager.showEncryptedVerDialog(this, getString(R.string.edu_item_input_encryted_title), question, object : DialogManager.PwdListener {
override fun onPositive(view: View?) {
val editText = view as EditText?
InputUtil.closeSoftInput(applicationContext, editText)
val editable = editText!!.text
if (editable == null || TextUtils.isEmpty(editable.toString())) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_encryted_title)
return
}
var answer = editable.toString()
answer = encrypt(answer)
if (TextUtils.equals(answer1, answer)) {
val intent = Intent(mAppContext, PwdPinSetPwdActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
startActivity(intent)
return
}
DialogUIUtils.showToastCenter("密保答案错误")
}
override fun onNegative() {
showEncryptedVerDialog()
}
})
}
fun close(view: View?) {
finish()
}
......
package com.android.launcher3.function.pwd
import android.content.Context
import android.os.Bundle
import android.support.v4.app.Fragment
import android.support.v4.app.FragmentManager
import android.support.v4.app.FragmentTransaction
import android.view.View
import com.android.launcher3.BaseActivity
import com.android.launcher3.R
import com.android.launcher3.function.pwd.fragment.EncryptedSetFragment
import com.android.launcher3.function.pwd.fragment.EncryptedVerifyFragment
import com.secspace.lib.common.utils.Prefs
class EncryptedActivity : BaseActivity() {
private var mContext: Context? = null
private val encryptedSet = EncryptedSetFragment()
private val encryptedVer = EncryptedVerifyFragment()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setAndroidNativeLightStatusBar(true)
setContentView(R.layout.activity_encrypted)
mContext = this
val from = intent.getStringExtra("from")
if(from == null){
val encrypted = Prefs.getEncrypted(mContext)
if (encrypted == "") {
replaceFragment(encryptedSet)
} else {
replaceFragment(encryptedVer)
}
return
}
replaceFragment(encryptedSet)
}
private fun replaceFragment(fragment: Fragment) {
val fragmentManager: FragmentManager = supportFragmentManager
val fragmentTransaction: FragmentTransaction = fragmentManager.beginTransaction()
fragmentTransaction.replace(R.id.ll_encrypted_parent, fragment, "")
fragmentTransaction.addToBackStack(null)
fragmentTransaction.commit()
}
fun close(view: View?) {
finish()
}
override fun onBackPressed() {
super.onBackPressed()
finish()
}
}
\ No newline at end of file
......@@ -44,10 +44,12 @@ public class PwdPinSetPwdActivity extends BaseActivity implements View.OnClickLi
* 密码短程度
*/
public static final int PWD_TINY_LENGTH = 6;
EditText mEditPwd;
CheckBox mCbShowPwd;
Button mBtSure;
TextView mTvtip;
private EditText mEditPwd;
private CheckBox mCbShowPwd;
private EditText mEditPwdAgain;
private CheckBox mCbShowPwdAgain;
private Button mBtSure;
private TextView mTvtip;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
......@@ -58,11 +60,14 @@ public class PwdPinSetPwdActivity extends BaseActivity implements View.OnClickLi
private void initView() {
mEditPwd = findViewById(R.id.edit_pwd);
mEditPwdAgain = findViewById(R.id.edit_pwd_again);
mCbShowPwd = findViewById(R.id.cb_show_pwd);
mCbShowPwdAgain = findViewById(R.id.cb_show_pwd_again);
mBtSure = findViewById(R.id.btn_sure);
mTvtip = findViewById(R.id.tv_tip);
mBtSure.setOnClickListener(this);
mCbShowPwd.setOnCheckedChangeListener(this);
mCbShowPwdAgain.setOnCheckedChangeListener(this);
}
private void startLauncher() {
......@@ -84,19 +89,21 @@ public class PwdPinSetPwdActivity extends BaseActivity implements View.OnClickLi
case R.id.btn_sure:
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindow().getDecorView().getWindowToken(), 0);
String pwd = String.valueOf(mEditPwd.getText());
if (TextUtils.isEmpty(pwd)) {
DialogUIUtils.showToastCenter("密码不能为空");
String pwdAgain = String.valueOf(mEditPwdAgain.getText());
if (TextUtils.isEmpty(pwd) || (pwd.length() < PWD_TINY_LENGTH)) {
DialogUIUtils.showToastCenter("密码为空或长度小于6位");
return;
}
if (pwd.length() < PWD_TINY_LENGTH) {
DialogUIUtils.showToastCenter("密码至少为6位");
if (TextUtils.isEmpty(pwdAgain) || (pwdAgain.length() < PWD_TINY_LENGTH)) {
DialogUIUtils.showToastCenter("确认密码为空或长度小于6位");
return;
}
if (!TextUtils.equals(pwd, pwdAgain)) {
DialogUIUtils.showToastCenter("两次输入密码不同");
return;
}
// if (pwd.length() > PWD_MAX_LENGTH) {
// ToastUtil.showShort(this, "密码不能超过16位");
// return;
// }
Log.i(TAG, "matches: " + datePatt.matcher(pwd).matches());
// if (!datePatt.matcher(pwd).matches()) {
// ToastUtil.showShort(this, "新密码必须为数字、字母或常用符号的8-16位组合");
......@@ -112,11 +119,23 @@ public class PwdPinSetPwdActivity extends BaseActivity implements View.OnClickLi
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
Log.i(TAG, "onCheckedChanged: TYPE_TEXT_VARIATION_PASSWORD");
mEditPwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else {
mEditPwd.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
switch (buttonView.getId()) {
case R.id.cb_show_pwd:
if (isChecked) {
mEditPwd.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else {
mEditPwd.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}
break;
case R.id.cb_show_pwd_again:
if (isChecked) {
mEditPwdAgain.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
} else {
mEditPwdAgain.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD);
}
break;
}
}
}
package com.android.launcher3.function.setting
package com.android.launcher3.function.pwd
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.view.View
import android.widget.EditText
import android.widget.GridLayout
import com.android.launcher3.BaseActivity
import com.android.launcher3.R
import com.android.launcher3.mdm.DisableCompat
import com.android.launcher3.settings.Contants
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
import com.qmuiteam.qmui.widget.grouplist.QMUIGroupListView
import com.secspace.lib.common.utils.PkgManager
import com.secspace.lib.common.utils.Prefs
import com.secspace.lib.common.utils.ToastUtil
import com.secspace.lib.common.utils.dp2px
import com.secspace.lib.common.dialog.other.DialogUIUtils
import com.secspace.lib.common.function.DialogManager.PwdListener
import com.secspace.lib.common.function.DialogManager.showEncryptedVerDialog
import com.secspace.lib.common.function.model.Encrypted
import com.secspace.lib.common.utils.*
import kotlinx.android.synthetic.main.activity_setting.*
class SettingPwdActivity : BaseActivity(){
......@@ -46,12 +48,10 @@ class SettingPwdActivity : BaseActivity(){
dp2px(48f))
QMUIGroupListView.newSection(this)
.addItemView(pwd) {
val intent1 = Intent(this, ChangePwdActivity::class.java)
intent1.putExtra(Contants.IS_SHOW_ORIGINAL_PWD, true)
startActivity(intent1)
startActivity(Intent(this, ChangePwdActivity::class.java))
}
.addItemView(pwdCar) {
ToastUtil.showShort(mContext, R.string.edu_toast_wait)
startActivity(Intent(this, EncryptedActivity::class.java))
}
.addTo(grouplistview)
}
......
package com.android.launcher3.function.pwd.fragment
import android.content.Context
import android.os.Bundle
import android.support.v4.app.Fragment
import android.text.SpannableString
import android.text.Spanned
import android.text.SpannedString
import android.text.style.AbsoluteSizeSpan
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import com.android.launcher3.R
import com.secspace.lib.common.function.model.Encrypted
import com.android.launcher3.settings.ErrorTimeHelper
import com.google.gson.Gson
import com.secspace.lib.common.dialog.other.DialogUIUtils
import com.secspace.lib.common.utils.Prefs
import com.secspace.lib.common.utils.encrypt
class EncryptedSetFragment : Fragment() {
private lateinit var questionEt1: EditText
private lateinit var questionEt2: EditText
private lateinit var answerEt1: EditText
private lateinit var answerEt2: EditText
private lateinit var sureBtn: Button
private lateinit var titleTv: TextView
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater.inflate(R.layout.fragment_encrypted_set, container, false)
initView(view)
return view
}
private fun initView(view: View) {
titleTv = view.findViewById(R.id.tv_setting_title)
sureBtn = view.findViewById(R.id.btn_encrypted_set)
questionEt1 = view.findViewById(R.id.et_question1)
questionEt2 = view.findViewById(R.id.et_question2)
answerEt1 = view.findViewById(R.id.et_answer1)
answerEt2 = view.findViewById(R.id.et_answer2)
titleTv.setText(R.string.edu_item_input_encryted_set)
setHintSize(questionEt1, getString(R.string.edu_item_input_encryted_question1))
setHintSize(answerEt1, getString(R.string.edu_item_input_encryted_answer1))
setHintSize(questionEt2, getString(R.string.edu_item_input_encryted_question2))
setHintSize(answerEt2, getString(R.string.edu_item_input_encryted_answer2))
sureBtn.setOnClickListener {
btnClick()
}
titleTv.setOnClickListener {
activity?.finish()
}
}
private fun setHintSize(editText: EditText, text: String) {
val ss = SpannableString(text)
val ass = AbsoluteSizeSpan(15, true)
ss.setSpan(ass, 0, ss.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
editText.hint = SpannedString(ss)
}
private fun btnClick() {
val imm: InputMethodManager = activity?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(activity?.window?.decorView?.windowToken, 0)
val question1 = questionEt1.text.toString()
var answer1 = answerEt1.text.toString()
val question2 = questionEt2.text.toString()
var answer2 = answerEt2.text.toString()
if (question1.isEmpty() || question2.isEmpty()) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_question_null)
return
}
if (answer1.isEmpty() || answer2.isEmpty()) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_answer_null)
return
}
DialogUIUtils.showToastCenter(R.string.edu_item_input_encryted_set_success)
answer1 = encrypt(answer1)
answer2 = encrypt(answer2)
val encrypted = Encrypted(question1, answer1, question2, answer2)
Prefs.setEncrypted(activity, Gson().toJson(encrypted))
//如果存在输错密码多次的情况下重置密码
ErrorTimeHelper.getInstance(activity).resetLockTimeAndCount()
activity?.finish()
}
}
\ No newline at end of file
package com.android.launcher3.function.pwd.fragment
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.support.v4.app.Fragment
import android.text.SpannableString
import android.text.Spanned
import android.text.SpannedString
import android.text.style.AbsoluteSizeSpan
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.InputMethodManager
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import com.android.launcher3.R
import com.secspace.lib.common.function.model.Encrypted
import com.android.launcher3.function.pwd.EncryptedActivity
import com.secspace.lib.common.dialog.other.DialogUIUtils
import com.secspace.lib.common.utils.JsonUtil
import com.secspace.lib.common.utils.Prefs
import com.secspace.lib.common.utils.encrypt
class EncryptedVerifyFragment : Fragment() {
private lateinit var questionTv1: TextView
private lateinit var questionTv2: TextView
private lateinit var answerEt1: EditText
private lateinit var answerEt2: EditText
private lateinit var sureBtn: Button
private lateinit var titleTv: TextView
private lateinit var encrypted: Encrypted
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
val view: View = inflater.inflate(R.layout.fragment_encrypted_ver, container, false)
val encryptedStr = Prefs.getEncrypted(activity)
if (encryptedStr.isEmpty()) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_encryted_error)
}
encrypted = JsonUtil.fromJson(encryptedStr, Encrypted::class.java)
initView(view)
return view
}
private fun initView(view: View) {
titleTv = view.findViewById(R.id.tv_setting_title)
sureBtn = view.findViewById(R.id.btn_encrypted_set)
questionTv1 = view.findViewById(R.id.tv_question1)
questionTv2 = view.findViewById(R.id.tv_question2)
answerEt1 = view.findViewById(R.id.et_answer1)
answerEt2 = view.findViewById(R.id.et_answer2)
titleTv.setText(R.string.edu_item_input_encryted_verfiy)
setHintSize(answerEt1, getString(R.string.edu_item_input_encryted_answer1))
setHintSize(answerEt2, getString(R.string.edu_item_input_encryted_answer2))
questionTv1.text = encrypted.question1
questionTv2.text = encrypted.question2
sureBtn.setOnClickListener {
btnClick()
}
titleTv.setOnClickListener {
activity?.finish()
}
}
private fun setHintSize(editText: EditText, text: String) {
val ss = SpannableString(text)
val ass = AbsoluteSizeSpan(15, true)
ss.setSpan(ass, 0, ss.length, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)
editText.hint = SpannedString(ss)
}
private fun btnClick() {
val imm: InputMethodManager = activity?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
imm.hideSoftInputFromWindow(activity?.window?.decorView?.windowToken, 0)
var answer1 = answerEt1.text.toString()
var answer2 = answerEt2.text.toString()
if (answer1.isEmpty() || answer2.isEmpty()) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_answer_null)
return
}
answer1 = encrypt(answer1)
answer2 = encrypt(answer2)
if (answer1 != encrypted.answer1) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_answer1_error)
return
}
if (answer2 != encrypted.answer2) {
DialogUIUtils.showToastCenter(R.string.edu_item_input_answer2_error)
return
}
DialogUIUtils.showToastCenter(R.string.edu_item_input_encryted_ver_success)
val intent = Intent(activity, EncryptedActivity::class.java)
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.putExtra("from", EncryptedVerifyFragment::class.java.simpleName)
startActivity(intent)
activity?.finish()
}
}
\ No newline at end of file
......@@ -8,11 +8,11 @@ import android.view.View
import android.widget.GridLayout
import com.android.launcher3.BaseActivity
import com.android.launcher3.R
import com.android.launcher3.function.pwd.SettingPwdActivity
import com.android.launcher3.mdm.DisableCompat
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
import com.qmuiteam.qmui.widget.grouplist.QMUIGroupListView
import com.secspace.lib.common.dialog.LoadingDialog
import com.secspace.lib.common.dialog.SwitcherDialog
import com.secspace.lib.common.event.ChangeWallPaperEvent
import com.secspace.lib.common.function.DialogManager
import com.secspace.lib.common.utils.PkgManager
......
......@@ -6,6 +6,7 @@ import android.support.annotation.Nullable;
import android.text.TextUtils;
import android.view.WindowManager;
import com.android.launcher3.function.pwd.EncryptedActivity;
import com.android.launcher3.function.pwd.PwdPinSetPwdActivity;
import com.secspace.lib.common.base.BaseActivity;
import com.secspace.lib.common.function.DialogManager;
......@@ -37,9 +38,17 @@ public class BlankActivity extends BaseActivity {
DialogManager.INSTANCE.showPrivacyPolicyDialog(this);
return;
}
String encrypted = Prefs.getEncrypted(this);
if(TextUtils.isEmpty(encrypted)){
Intent intent = new Intent(this, EncryptedActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return;
}
String pwd = Prefs.getLoginPwd(this);
if (TextUtils.isEmpty(pwd)) {
Intent intent = new Intent(this, PwdPinSetPwdActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
return;
}
......
......@@ -26,8 +26,8 @@ MAVEN_URL=http://192.168.0.170:13000/nexus/content/repositories/releases/
MAVEN_URL_SNAPSHOT=http://192.168.0.170:13000/nexus/content/repositories/releases/
#32位有符号数2147483647(10)
versionIntCode=2020032402
versionIntCode=2020032601
versionNameMajor=1
versionNameMinor=1
versionNameMinor=2
versionNamePatch=0
\ No newline at end of file
......@@ -36,6 +36,7 @@ import com.secspace.lib.common.R;
public class AlertDialogHolder extends SuperHolder {
protected TextView tvTitle;
public TextView tvMsg;
public TextView tvThird;
public EditText et1;
public EditText et2;
protected View line;
......@@ -58,23 +59,24 @@ public class AlertDialogHolder extends SuperHolder {
@Override
protected void findViews() {
tvTitle = (TextView) rootView.findViewById(R.id.dialogui_tv_title);
tvMsg = (TextView) rootView.findViewById(R.id.dialogui_tv_msg);
et1 = (EditText) rootView.findViewById(R.id.et_1);
et2 = (EditText) rootView.findViewById(R.id.et_2);
line = (View) rootView.findViewById(R.id.line);
btn1 = (Button) rootView.findViewById(R.id.btn_1);
lineBtn2 = (View) rootView.findViewById(R.id.line_btn2);
btn2 = (Button) rootView.findViewById(R.id.btn_2);
lineBtn3 = (View) rootView.findViewById(R.id.line_btn3);
btn3 = (Button) rootView.findViewById(R.id.btn_3);
llContainerHorizontal = (LinearLayout) rootView.findViewById(R.id.ll_container_horizontal);
btn1Vertical = (Button) rootView.findViewById(R.id.btn_1_vertical);
lineBtn2Vertical = (View) rootView.findViewById(R.id.line_btn2_vertical);
btn2Vertical = (Button) rootView.findViewById(R.id.btn_2_vertical);
lineBtn3Vertical = (View) rootView.findViewById(R.id.line_btn3_vertical);
btn3Vertical = (Button) rootView.findViewById(R.id.btn_3_vertical);
llContainerVertical = (LinearLayout) rootView.findViewById(R.id.ll_container_vertical);
tvTitle = rootView.findViewById(R.id.dialogui_tv_title);
tvMsg = rootView.findViewById(R.id.dialogui_tv_msg);
et1 = rootView.findViewById(R.id.et_1);
et2 = rootView.findViewById(R.id.et_2);
line = rootView.findViewById(R.id.line);
btn1 = rootView.findViewById(R.id.btn_1);
lineBtn2 = rootView.findViewById(R.id.line_btn2);
btn2 = rootView.findViewById(R.id.btn_2);
lineBtn3 = rootView.findViewById(R.id.line_btn3);
btn3 = rootView.findViewById(R.id.btn_3);
llContainerHorizontal = rootView.findViewById(R.id.ll_container_horizontal);
btn1Vertical = rootView.findViewById(R.id.btn_1_vertical);
lineBtn2Vertical = rootView.findViewById(R.id.line_btn2_vertical);
btn2Vertical = rootView.findViewById(R.id.btn_2_vertical);
lineBtn3Vertical = rootView.findViewById(R.id.line_btn3_vertical);
btn3Vertical = rootView.findViewById(R.id.btn_3_vertical);
llContainerVertical = rootView.findViewById(R.id.ll_container_vertical);
tvThird = rootView.findViewById(R.id.tv_third);
}
......@@ -93,6 +95,9 @@ public class AlertDialogHolder extends SuperHolder {
tvTitle.setTextColor(ToolUtils.getColor(tvTitle.getContext(), bean.titleTxtColor));
tvTitle.setTextSize(bean.titleTxtSize);
tvThird.setTextColor(ToolUtils.getColor(tvThird.getContext(), bean.inputTxtColor));
tvThird.setTextSize(bean.thirdTxtSize);
btn3Vertical.setTextSize(bean.btnTxtSize);
btn2Vertical.setTextSize(bean.btnTxtSize);
btn1Vertical.setTextSize(bean.btnTxtSize);
......@@ -134,6 +139,13 @@ public class AlertDialogHolder extends SuperHolder {
tvMsg.setTextSize(bean.msgTxtSize);
}
if (TextUtils.isEmpty(bean.thirdTxt)) {
tvThird.setVisibility(View.GONE);
} else {
tvThird.setVisibility(View.VISIBLE);
tvThird.setText(bean.thirdTxt);
}
if (bean.isPassword) {
et1.setVisibility(View.VISIBLE);
et2.setVisibility(View.GONE);
......@@ -221,7 +233,13 @@ public class AlertDialogHolder extends SuperHolder {
}
}
tvThird.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DialogUIUtils.dismiss(bean.dialog, bean.alertDialog);
bean.listener.onNeutral();
}
});
//事件
if (bean.isVertical) {
btn1Vertical.setOnClickListener(new View.OnClickListener() {
......
......@@ -62,6 +62,8 @@ public interface Assignable {
BuildBean assignAlertPassword(Context activity, CharSequence title, CharSequence msg, CharSequence hint1, CharSequence hint2,
CharSequence firstTxt, CharSequence secondTxt, boolean isVertical, boolean cancleable, boolean outsideTouchable, final DialogUIListener listener);
BuildBean assignAlertPasswordCanVer(Context activity, CharSequence title, CharSequence msg, CharSequence thirdTxt, CharSequence hint1, CharSequence hint2,
CharSequence firstTxt, CharSequence secondTxt, boolean isVertical, boolean cancleable, boolean outsideTouchable, final DialogUIListener listener);
/**
* 自定义弹出框
*/
......
......@@ -57,6 +57,7 @@ public class BuildBean extends Buildable implements Styleable {
public CharSequence text1 = DialogConfig.dialogui_btnTxt1;
public CharSequence text2 = DialogConfig.dialogui_btnTxt2;
public CharSequence text3;
public CharSequence thirdTxt;
public CharSequence bottomTxt = DialogConfig.dialogui_bottomTxt;
public CharSequence hint1;
......@@ -113,10 +114,11 @@ public class BuildBean extends Buildable implements Styleable {
//字体大小
public int btnTxtSize = 17;// in sp
public int titleTxtSize = 14;
public int titleTxtSize = 17;
public int msgTxtSize = 14;
public int itemTxtSize = 14;
public int inputTxtSize = 14;
public int thirdTxtSize = 14;
@SuppressLint("ResourceType")
......
......@@ -25,7 +25,7 @@ public class DialogAssigner implements Assignable {
@Override
public BuildBean assignLoading(Context context, CharSequence msg,boolean isVertical, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg) {
public BuildBean assignLoading(Context context, CharSequence msg, boolean isVertical, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg) {
BuildBean bean = new BuildBean();
bean.mContext = context;
bean.msg = msg;
......@@ -39,7 +39,7 @@ public class DialogAssigner implements Assignable {
}
@Override
public BuildBean assignMdLoading(Context context, CharSequence msg,boolean isVertical, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg) {
public BuildBean assignMdLoading(Context context, CharSequence msg, boolean isVertical, boolean cancleable, boolean outsideTouchable, boolean isWhiteBg) {
BuildBean bean = new BuildBean();
bean.mContext = context;
bean.msg = msg;
......@@ -108,7 +108,27 @@ public class DialogAssigner implements Assignable {
@Override
public BuildBean assignAlertPassword(Context activity, CharSequence title, CharSequence msg, CharSequence hint1, CharSequence hint2,
CharSequence firstTxt, CharSequence secondTxt, boolean isVertical, boolean cancleable, boolean outsideTouchable, DialogUIListener listener) {
CharSequence firstTxt, CharSequence secondTxt, boolean isVertical, boolean cancleable, boolean outsideTouchable, DialogUIListener listener) {
BuildBean bean = new BuildBean();
bean.mContext = activity;
bean.msg = msg;
bean.title = title;
bean.hint1 = hint1;
bean.hint2 = hint2;
bean.text1 = firstTxt;
bean.text2 = secondTxt;
bean.isVertical = isVertical;
bean.gravity = Gravity.CENTER;
bean.cancelable = cancleable;
bean.outsideTouchable = outsideTouchable;
bean.listener = listener;
bean.type = DialogConfig.TYPE_ALERT;
bean.isPassword = true;
return bean;
}
@Override
public BuildBean assignAlertPasswordCanVer(Context activity, CharSequence title, CharSequence msg, CharSequence thirdTxt, CharSequence hint1, CharSequence hint2, CharSequence firstTxt, CharSequence secondTxt, boolean isVertical, boolean cancleable, boolean outsideTouchable, DialogUIListener listener) {
BuildBean bean = new BuildBean();
bean.mContext = activity;
bean.msg = msg;
......@@ -124,6 +144,7 @@ public class DialogAssigner implements Assignable {
bean.listener = listener;
bean.type = DialogConfig.TYPE_ALERT;
bean.isPassword = true;
bean.thirdTxt = thirdTxt;
return bean;
}
......
......@@ -27,7 +27,7 @@ import com.secspace.lib.common.R;
public class DialogConfig {
@ColorRes
public static int iosBtnColor = R.color.ios_btntext_blue;
public static int iosBtnColor = R.color.text_title_11;
@ColorRes
public static int lvItemTxtColor = R.color.text_item_33;
@ColorRes
......
......@@ -221,10 +221,14 @@ public class DialogUIUtils {
}
public static BuildBean showAlertPassword(Activity activity, CharSequence title, CharSequence msg, CharSequence hint1, CharSequence hint2,
CharSequence firstTxt, CharSequence secondTxt, boolean isVertical, boolean cancleable, boolean outsideTouchable, DialogUIListener listener) {
return DialogAssigner.getInstance().assignAlertPassword(activity, title, msg, hint1, hint2, firstTxt, secondTxt, isVertical, cancleable, outsideTouchable, listener);
CharSequence sure, CharSequence cancel, boolean isVertical, boolean cancleable, boolean outsideTouchable, DialogUIListener listener) {
return DialogAssigner.getInstance().assignAlertPassword(activity, title, msg, hint1, hint2, sure, cancel, isVertical, cancleable, outsideTouchable, listener);
}
public static BuildBean showAlertPasswordCanVer(Activity activity, CharSequence title, CharSequence msg, CharSequence thirdTx, CharSequence hint1, CharSequence hint2,
CharSequence sure, CharSequence cancel, boolean isVertical, boolean cancleable, boolean outsideTouchable, DialogUIListener listener) {
return DialogAssigner.getInstance().assignAlertPasswordCanVer(activity, title, msg, thirdTx, hint1, hint2, sure, cancel, isVertical, cancleable, outsideTouchable, listener);
}
/**
* 短时间中下位置显示。线程安全,可以在非UI线程调用。
*/
......
......@@ -21,7 +21,7 @@ import org.greenrobot.eventbus.EventBus
* Created by cyw_m on 2018/4/6.
*/
@SuppressLint("StaticFieldLeak")
object DialogManager{
object DialogManager {
private var mSimpleDialog: SimpleDialog? = null
/**
* 安装中间件弹窗
......@@ -80,8 +80,26 @@ object DialogManager{
}).show()
}
fun showPwdDialog(activity: Activity?, title: String?, listener: PwdListener) {
val buildBean = DialogUIUtils.showAlertPassword(activity, title, "", "", "", "确定", "取消", false, false, false, object : DialogUIListener() {
fun showPwdDialog(activity: Activity?, title: String?, listener: PwdCanVerListener) {
val buildBean = DialogUIUtils.showAlertPasswordCanVer(activity, title, "", "忘记密码", "", "", "确定", "取消", false, false, false, object : DialogUIListener() {
override fun onPositive(view: View) {
listener.onPositive(view)
}
override fun onPositive() {}
override fun onNegative() {
listener.onNegative()
}
override fun onNeutral() {
listener.onNeutral()
}
})
buildBean.show()
}
fun showEncryptedVerDialog(activity: Activity?, title: String?, question: String?, listener: PwdListener) {
val buildBean = DialogUIUtils.showAlert(activity, title, question, "答案", "", "确定", "切换问题", false, false, false, object : DialogUIListener() {
override fun onPositive(view: View) {
listener.onPositive(view)
}
......@@ -103,4 +121,10 @@ object DialogManager{
fun onPositive(view: View?)
fun onNegative()
}
interface PwdCanVerListener {
fun onPositive(view: View?)
fun onNegative()
fun onNeutral()
}
}
\ No newline at end of file
......@@ -10,6 +10,10 @@ import android.os.SystemClock
import com.secspace.lib.common.R
import com.secspace.lib.common.dialog.LoadingDialog
import com.secspace.lib.common.env.SEnvironment
import com.secspace.lib.common.function.ActivationHelper.ActivationListener
import com.secspace.lib.common.function.ActivationHelper.active
import com.secspace.lib.common.function.DialogManager.MessageListener
import com.secspace.lib.common.function.DialogManager.showActivateLoseDialog
import com.secspace.lib.common.utils.*
import com.secspace.log.Log
import com.secspace.mdmengine.api.manager.MdmFactoryManager
......@@ -56,13 +60,31 @@ object WorkManager {
LoadingDialog.getInstance(launcher).show("切换中")
GlobalScope.launch(Dispatchers.IO) {
SwitchInMdm.onInit(launcher)
checkLocalUpdateFile() //检查本地更新文件
activate(launcher)
// checkLocalUpdateFile() //检查本地更新文件
ActivationHelper.checkActivate(launcher, EduCheckActiveStatusListener(launcher))
}
isChecksCompleted = true
Prefs.setMdmInitializedWhenEnter(mContext, true)
}
fun activate(activity: Activity) {
active(activity, object : ActivationListener {
override fun activationFailed() {
showActivateLoseDialog(activity, activity.getString(R.string.common_remind)
, activity.getString(R.string.dialog_tip_activate_lose), object : MessageListener {
override fun onPositive() {
IntentUtil.startExitService(activity)
}
override fun onNegative() {}
})
}
override fun activated() {}
}, false)
}
fun exit(context: Context?) {
GlobalScope.launch(Dispatchers.IO) {
context?.let { SwitchOutMdm.onExit(it) }
......@@ -140,7 +162,7 @@ object WorkManager {
install(path)
}
fun removeForbidden(context: Context){
fun removeForbidden(context: Context) {
Prefs.setMdmInitializedWhenEnter(context, false)
GlobalScope.launch(Dispatchers.IO) {
SwitchOutMdm.onExit(context)
......
package com.secspace.lib.common.function.model
data class Encrypted(var question1: String, var answer1: String, var question2: String, var answer2: String)
\ No newline at end of file
......@@ -6,6 +6,8 @@ import android.util.ArrayMap;
import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.List;
......@@ -45,4 +47,22 @@ public class JsonUtil {
return gson.fromJson(json, new TypeToken<ArrayMap>() {
}.getType());
}
// public static <T>T json2Class(String json) {
// if (TextUtils.isEmpty(json)) {
// return null;
// }
// Gson gson = new Gson();
// Type type = ((ParameterizedType) T.class.getGenericSuperclass()).getActualTypeArguments()[0];
// return gson.fromJson(json, new TypeToken<T>() {
// }.getType());
// }
public static <T> T fromJson(String result, Class<T> classOfT) {
if (result == null) {
return null;
}
Gson gson = new Gson();
return gson.fromJson(result, classOfT);
}
}
package com.secspace.lib.common.utils
import com.skr.activation.utils.DesUtil
fun decrypt(strMi: String): String{
return DesUtil.decrypt(strMi)
}
fun encrypt(strMi: String): String{
return DesUtil.encrypt(strMi)
}
\ No newline at end of file
......@@ -18,8 +18,7 @@
android:paddingTop="12dp"
android:text=""
android:textColor="@color/text_title_11"
android:textSize="@dimen/dialogui_title_txt_size"
android:textStyle="bold"/>
android:textSize="@dimen/dialogui_title_txt_size"/>
<LinearLayout
......@@ -75,7 +74,21 @@
android:textCursorDrawable="@drawable/dialogui_shape_et_cursor"
android:textSize="@dimen/dialogui_input_txt_size"/>
<TextView
android:id="@+id/tv_third"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:layout_marginTop="-15dp"
android:layout_marginLeft="20dp"
android:layout_marginRight="30dp"
android:visibility="gone"
android:paddingLeft="5dp"
android:paddingRight="5dp"
android:text="忘记密码"
android:layout_gravity="center_vertical|right"
android:gravity="center"
android:textColor="@color/ios_btntext_blue"
android:textSize="@dimen/dialogui_input_txt_size"/>
</LinearLayout>
<View
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment