Commit 5896f532 by Baoxy

fix: 禁止桌面摆放多个相同图标/优化激活逻辑

parent 7808bffa
...@@ -80,7 +80,7 @@ ...@@ -80,7 +80,7 @@
<activity android:name=".settings.wifi.WifiWhiteListActivity" <activity android:name=".settings.wifi.WifiWhiteListActivity"
android:excludeFromRecents="true"/> android:excludeFromRecents="true"/>
<activity android:name=".function.setting.AdminSettingActivity" <activity android:name=".function.setting.SettingAdminActivity"
android:theme="@style/SettingTheme" android:theme="@style/SettingTheme"
android:excludeFromRecents="true"/> android:excludeFromRecents="true"/>
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true" android:fitsSystemWindows="true"
android:orientation="vertical" android:orientation="vertical"
tools:context="com.android.launcher3.function.setting.AdminSettingActivity"> tools:context="com.android.launcher3.function.setting.SettingAdminActivity">
<TextView <TextView
android:id="@+id/tv_setting_title" android:id="@+id/tv_setting_title"
......
...@@ -153,6 +153,7 @@ import com.android.launcher3.widget.WidgetAddFlowHandler; ...@@ -153,6 +153,7 @@ import com.android.launcher3.widget.WidgetAddFlowHandler;
import com.android.launcher3.widget.WidgetHostViewLoader; import com.android.launcher3.widget.WidgetHostViewLoader;
import com.android.launcher3.widget.WidgetsContainerView; import com.android.launcher3.widget.WidgetsContainerView;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.secspace.lib.common.dialog.other.DialogUIUtils;
import com.secspace.lib.common.event.ChangeWallPaperEvent; import com.secspace.lib.common.event.ChangeWallPaperEvent;
import com.secspace.lib.common.event.InitEvent; import com.secspace.lib.common.event.InitEvent;
import com.secspace.lib.common.event.RefreshWorkSpaceEvent; import com.secspace.lib.common.event.RefreshWorkSpaceEvent;
...@@ -1211,12 +1212,6 @@ public class Launcher extends BaseActivity ...@@ -1211,12 +1212,6 @@ public class Launcher extends BaseActivity
} }
private void activationNext() { private void activationNext() {
String pwd = Prefs.getLoginPwd(this);
if (TextUtils.isEmpty(pwd)) {
Intent intent = new Intent(this, PwdPinSetPwdActivity.class);
startActivity(intent);
return;
}
LauncherAppState app = LauncherAppState.getInstanceNoCreate(); LauncherAppState app = LauncherAppState.getInstanceNoCreate();
if (app != null) { if (app != null) {
app.getModel().forceReload(); app.getModel().forceReload();
...@@ -3121,7 +3116,7 @@ public class Launcher extends BaseActivity ...@@ -3121,7 +3116,7 @@ public class Launcher extends BaseActivity
if (TextUtils.equals(((EditText)view).getText().toString(), Prefs.getLoginPwd(mAppContext))) { if (TextUtils.equals(((EditText)view).getText().toString(), Prefs.getLoginPwd(mAppContext))) {
IntentUtil.startExitService(mAppContext); IntentUtil.startExitService(mAppContext);
} else { } else {
ToastUtil.showLong(mAppContext, "密码错误!"); DialogUIUtils.showToastCenter("密码错误");
ErrorTimeHelper.getInstance(mAppContext).addErrorCount(); ErrorTimeHelper.getInstance(mAppContext).addErrorCount();
} }
} }
......
...@@ -9,8 +9,9 @@ import android.text.TextUtils; ...@@ -9,8 +9,9 @@ import android.text.TextUtils;
import android.view.View; import android.view.View;
import android.widget.EditText; import android.widget.EditText;
import com.android.launcher3.function.setting.AdminSettingActivity; import com.android.launcher3.function.setting.SettingAdminActivity;
import com.android.launcher3.settings.ErrorTimeHelper; 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.DialogManager;
import com.secspace.lib.common.utils.InputUtil; import com.secspace.lib.common.utils.InputUtil;
import com.secspace.lib.common.utils.Prefs; import com.secspace.lib.common.utils.Prefs;
...@@ -37,14 +38,13 @@ public class ManagerAuthActivity extends BaseActivity { ...@@ -37,14 +38,13 @@ public class ManagerAuthActivity extends BaseActivity {
boolean canInputPwd = ErrorTimeHelper.getInstance(mAppContext).canInputPwd(); boolean canInputPwd = ErrorTimeHelper.getInstance(mAppContext).canInputPwd();
if (canInputPwd){ if (canInputPwd){
if (TextUtils.equals(editText.getText().toString(), Prefs.getLoginPwd(mAppContext))) { if (TextUtils.equals(editText.getText().toString(), Prefs.getLoginPwd(mAppContext))) {
ToastUtil.showLong(mAppContext, "密码正确!");
finish(); finish();
ErrorTimeHelper.getInstance(mAppContext).resetLockTimeAndCount(); ErrorTimeHelper.getInstance(mAppContext).resetLockTimeAndCount();
Intent intent = new Intent(); Intent intent = new Intent();
intent.setClass(mAppContext, AdminSettingActivity.class); intent.setClass(mAppContext, SettingAdminActivity.class);
startActivity(intent); startActivity(intent);
} else { } else {
ToastUtil.showLong(mAppContext, "密码错误!"); DialogUIUtils.showToastCenter("密码错误");
ErrorTimeHelper.getInstance(mAppContext).addErrorCount(); ErrorTimeHelper.getInstance(mAppContext).addErrorCount();
finish(); finish();
} }
......
...@@ -27,7 +27,7 @@ import kotlinx.coroutines.delay ...@@ -27,7 +27,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus import org.greenrobot.eventbus.EventBus
class AdminSettingActivity : BaseActivity() { class SettingAdminActivity : BaseActivity() {
private var mContext: Context? = null private var mContext: Context? = null
private var icon: QMUICommonListItemView? = null private var icon: QMUICommonListItemView? = null
private var reinforce: QMUICommonListItemView? = null private var reinforce: QMUICommonListItemView? = null
......
package com.android.launcher3.function.setting package com.android.launcher3.function.setting
import android.app.Activity
import android.app.AlertDialog
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View import android.view.View
import android.widget.GridLayout import android.widget.GridLayout
import android.widget.LinearLayout
import android.widget.TextView
import com.android.launcher3.BaseActivity import com.android.launcher3.BaseActivity
import com.android.launcher3.R import com.android.launcher3.R
import com.android.launcher3.mdm.DisableCompat import com.android.launcher3.mdm.DisableCompat
import com.android.launcher3.settings.Contants import com.android.launcher3.settings.Contants
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
import com.qmuiteam.qmui.widget.grouplist.QMUIGroupListView import com.qmuiteam.qmui.widget.grouplist.QMUIGroupListView
import com.secspace.lib.common.dialog.SwitcherDialog
import com.secspace.lib.common.event.ChangeWallPaperEvent
import com.secspace.lib.common.utils.PkgManager import com.secspace.lib.common.utils.PkgManager
import com.secspace.lib.common.utils.Prefs import com.secspace.lib.common.utils.Prefs
import com.secspace.lib.common.utils.ToastUtil import com.secspace.lib.common.utils.ToastUtil
import com.secspace.lib.common.utils.UninstallUtil.removeForbidden
import com.secspace.lib.common.utils.UninstallUtil.uninstallService
import com.secspace.lib.common.utils.dp2px import com.secspace.lib.common.utils.dp2px
import kotlinx.android.synthetic.main.activity_setting.* import kotlinx.android.synthetic.main.activity_setting.*
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
class SettingPwdActivity : BaseActivity(){ class SettingPwdActivity : BaseActivity(){
private var mContext: Context? = null private var mContext: Context? = null
...@@ -85,60 +70,4 @@ class SettingPwdActivity : BaseActivity(){ ...@@ -85,60 +70,4 @@ class SettingPwdActivity : BaseActivity(){
DisableCompat.disableApplication(mContext, packageName) DisableCompat.disableApplication(mContext, packageName)
} }
} }
private fun uninstall() {
GlobalScope.launch(Dispatchers.Main) {
SwitcherDialog.getInstance(mContext).show(getString(R.string.edu_uninstall), "unInstall")
removeForbidden(mContext)
delay(1000)
uninstallService(mContext)
delay(800)
SwitcherDialog.getInstance(mContext).dismiss("unInstall")
}
}
override fun onActivityResult(
requestCode: Int, resultCode: Int, data: Intent?) {
if (requestCode == REQUEST_PICK_WALLPAPER) {
if (resultCode == Activity.RESULT_OK) {
Log.e("WWWW", "AAAAA")
val selectedImage = data!!.data
EventBus.getDefault().postSticky(ChangeWallPaperEvent(selectedImage))
ToastUtil.showShort(this, "壁纸修改成功")
}
}
}
private inline fun showTipDialog(crossinline block: () -> Unit, text: String) {
val alertDialog: AlertDialog
val textView = TextView(this)
val view = LayoutInflater.from(this).inflate(R.layout.item_ll, null)
textView.text = text
val ll = view.findViewById<LinearLayout>(R.id.item_ll)
ll.addView(textView)
alertDialog = AlertDialog.Builder(this)
.setTitle(getString(R.string.tip))
.setCancelable(false)
.setView(view)
.setNegativeButton(R.string.work_cancel) { dialog, _ -> dialog.dismiss() }
.setPositiveButton(R.string.work_sure) { dialog, _ ->
run {
dialog.dismiss()
block()
}
}
.create()
if (!alertDialog.isShowing) {
alertDialog.show()
}
}
companion object {
private const val REQUEST_PICK_WALLPAPER = 10
private const val ACTION_CHANGE_WALLPAPER = "action_change_wallpaper"
//允许添加先安装应用
const val ALLOW_NEW_APP = 0
//允许本身自启
const val AUTO_START_SELF = 1
}
} }
\ No newline at end of file
package com.android.launcher3.settings; package com.android.launcher3.settings;
import android.content.Intent; import android.content.Intent;
import android.text.TextUtils;
import com.android.launcher3.function.pwd.PwdPinSetPwdActivity;
import com.secspace.lib.common.base.BaseActivity; import com.secspace.lib.common.base.BaseActivity;
import com.secspace.lib.common.function.DialogManager; import com.secspace.lib.common.function.DialogManager;
import com.secspace.lib.common.utils.IntentUtil; import com.secspace.lib.common.utils.IntentUtil;
...@@ -26,6 +28,12 @@ public class BlankActivity extends BaseActivity { ...@@ -26,6 +28,12 @@ public class BlankActivity extends BaseActivity {
DialogManager.INSTANCE.showPrivacyPolicyDialog(this); DialogManager.INSTANCE.showPrivacyPolicyDialog(this);
return; return;
} }
String pwd = Prefs.getLoginPwd(this);
if (TextUtils.isEmpty(pwd)) {
Intent intent = new Intent(this, PwdPinSetPwdActivity.class);
startActivity(intent);
return;
}
IntentUtil.startEduLauncher(this); IntentUtil.startEduLauncher(this);
} }
......
...@@ -96,7 +96,7 @@ object ActivationHelper { ...@@ -96,7 +96,7 @@ object ActivationHelper {
return File(FILE_PATH + context.packageName, PROBATION_FILE_NAME).exists() return File(FILE_PATH + context.packageName, PROBATION_FILE_NAME).exists()
} }
private suspend fun isProbationFromLocal(context: Context): Boolean { suspend fun isProbationFromLocal(context: Context): Boolean {
return withContext(Dispatchers.IO) { return withContext(Dispatchers.IO) {
val file = File(FILE_PATH + context.packageName, PROBATION_FILE_NAME) val file = File(FILE_PATH + context.packageName, PROBATION_FILE_NAME)
if (!file.exists()) { if (!file.exists()) {
......
...@@ -11,10 +11,6 @@ import com.secspace.lib.common.R ...@@ -11,10 +11,6 @@ import com.secspace.lib.common.R
import com.secspace.lib.common.function.ActivationHelper.ActivationListener import com.secspace.lib.common.function.ActivationHelper.ActivationListener
import com.secspace.lib.common.function.ActivationHelper.active import com.secspace.lib.common.function.ActivationHelper.active
import com.secspace.lib.common.utils.IntentUtil import com.secspace.lib.common.utils.IntentUtil
import com.secspace.lib.common.utils.Prefs
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
class BuyCodeDialog(activity: Activity) : DialogInterface.OnDismissListener, View.OnClickListener { class BuyCodeDialog(activity: Activity) : DialogInterface.OnDismissListener, View.OnClickListener {
private var mActivity: Activity? private var mActivity: Activity?
...@@ -64,10 +60,7 @@ class BuyCodeDialog(activity: Activity) : DialogInterface.OnDismissListener, Vie ...@@ -64,10 +60,7 @@ class BuyCodeDialog(activity: Activity) : DialogInterface.OnDismissListener, Vie
} }
}, true) }, true)
dismiss() dismiss()
Prefs.setMdmInitializedWhenEnter(mContext, false) WorkManager.removeForbidden(mContext)
GlobalScope.launch(Dispatchers.IO) {
SwitchOutMdm.onInit(mContext)
}
} }
} }
......
...@@ -94,6 +94,18 @@ object DialogManager{ ...@@ -94,6 +94,18 @@ object DialogManager{
}).show() }).show()
} }
fun showActivateLoseDialog(activity: Activity?, title: String?, content: String?, listener: MessageListener) {
DialogUIUtils.showAlert(activity, title, content, "", "", "确定", "输入激活码", false, false, false, object : DialogUIListener() {
override fun onPositive() {
listener.onPositive()
}
override fun onNegative() {
listener.onNegative()
}
}).show()
}
fun showMessageDialogBySure(activity: Activity?, title: String?, content: String?, listener: MessageListener) { fun showMessageDialogBySure(activity: Activity?, title: String?, content: String?, listener: MessageListener) {
DialogUIUtils.showAlert(activity, title, content, "", "", "确定", "", false, false, false, object : DialogUIListener() { DialogUIUtils.showAlert(activity, title, content, "", "", "确定", "", false, false, false, object : DialogUIListener() {
override fun onPositive() { override fun onPositive() {
......
...@@ -176,7 +176,11 @@ public class PrivacyPolicyDialog implements DialogInterface.OnDismissListener, V ...@@ -176,7 +176,11 @@ public class PrivacyPolicyDialog implements DialogInterface.OnDismissListener, V
mActivity.finish(); mActivity.finish();
} else if (v.getId() == R.id.btn_accept) { } else if (v.getId() == R.id.btn_accept) {
Prefs.setPrivacyPolicyState(mActivity, true); Prefs.setPrivacyPolicyState(mActivity, true);
IntentUtil.startEduLauncher(mActivity); try {
mActivity.startActivity(new Intent(mActivity, Class.forName("com.android.launcher3.settings.BlankActivity")));
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
dismiss(); dismiss();
mActivity.finish(); mActivity.finish();
} }
......
...@@ -19,7 +19,7 @@ import kotlinx.coroutines.GlobalScope ...@@ -19,7 +19,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.io.File import java.io.File
object WorkManager{ object WorkManager {
private val TAG = "SecSpaceWorkManager" private val TAG = "SecSpaceWorkManager"
private lateinit var mContext: Context private lateinit var mContext: Context
private val mHandler: Handler = Handler(Looper.getMainLooper(), Handler.Callback { true }) private val mHandler: Handler = Handler(Looper.getMainLooper(), Handler.Callback { true })
...@@ -50,7 +50,7 @@ object WorkManager{ ...@@ -50,7 +50,7 @@ object WorkManager{
//安装耗时,检查是否都是最新的 //安装耗时,检查是否都是最新的
if (!DpmHelper.getInstance(mContext).isMiddlewareLatest) { if (!DpmHelper.getInstance(mContext).isMiddlewareLatest) {
Log.i(TAG, "will install delay") Log.i(TAG, "will install delay")
mHandler.postDelayed( { enter(launcher) }, 2000) mHandler.postDelayed({ enter(launcher) }, 2000)
return return
} }
LoadingDialog.getInstance(launcher).show("切换中") LoadingDialog.getInstance(launcher).show("切换中")
...@@ -63,7 +63,7 @@ object WorkManager{ ...@@ -63,7 +63,7 @@ object WorkManager{
Prefs.setMdmInitializedWhenEnter(mContext, true) Prefs.setMdmInitializedWhenEnter(mContext, true)
} }
fun exit(context: Context?){ fun exit(context: Context?) {
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
context?.let { SwitchOutMdm.onExit(it) } context?.let { SwitchOutMdm.onExit(it) }
} }
...@@ -140,18 +140,43 @@ object WorkManager{ ...@@ -140,18 +140,43 @@ object WorkManager{
install(path) install(path)
} }
fun removeForbidden(context: Context){
Prefs.setMdmInitializedWhenEnter(context, false)
GlobalScope.launch(Dispatchers.IO) {
SwitchOutMdm.onInit(context)
UninstallUtil.removeForbidden(context)
}
}
internal class EduCheckActiveStatusListener(var activity: Activity) : CheckActiveStatusListener { internal class EduCheckActiveStatusListener(var activity: Activity) : CheckActiveStatusListener {
override fun needActivate() { override fun needActivate() {
Log.i(TAG, "activedFailed: ") Log.i(TAG, "activedFailed: ")
DialogManager.showMessageDialogBySure(activity, activity.getString(R.string.common_remind), activity.getString(R.string.dialog_tip_activate_lose), object: DialogManager.MessageListener{ GlobalScope.launch(Dispatchers.Main) {
override fun onPositive() { val isActivateLocal = ActivationHelper.isProbationFromLocal(activity)
IntentUtil.startExitService(activity) if (isActivateLocal) {
return@launch
} }
DialogManager.showActivateLoseDialog(activity, activity.getString(R.string.common_remind), activity.getString(R.string.dialog_tip_activate_lose), object : DialogManager.MessageListener {
override fun onNegative() { override fun onPositive() {
IntentUtil.startExitService(activity)
} removeForbidden(activity)
}) }
override fun onNegative() {
ActivationHelper.active(activity, object : ActivationHelper.ActivationListener {
override fun activated() {
IntentUtil.startEduLauncher(activity)
}
override fun activationFailed() {
IntentUtil.startExitService(activity)
removeForbidden(activity)
}
}, true)
removeForbidden(activity)
}
})
}
} }
override fun trialCodeWillPastDue() { override fun trialCodeWillPastDue() {
......
...@@ -92,15 +92,16 @@ ...@@ -92,15 +92,16 @@
android:orientation="horizontal"> android:orientation="horizontal">
<Button <Button
android:id="@+id/btn_1" android:id="@+id/btn_2"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/dialogui_selector_left_bottom" android:background="@drawable/dialogui_selector_all_no"
android:gravity="center" android:gravity="center"
android:minHeight="48dp"
android:padding="5dp" android:padding="5dp"
android:text="1" android:text="2"
android:textColor="@color/ios_btntext_blue" android:textColor="@color/ios_btntext_blue"
android:textSize="@dimen/dialogui_btn_txt_size"/> android:textSize="@dimen/dialogui_btn_txt_size"/>
...@@ -111,19 +112,20 @@ ...@@ -111,19 +112,20 @@
android:background="@color/line_dd"/> android:background="@color/line_dd"/>
<Button <Button
android:id="@+id/btn_2" android:id="@+id/btn_1"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_weight="1" android:layout_weight="1"
android:background="@drawable/dialogui_selector_all_no" android:background="@drawable/dialogui_selector_left_bottom"
android:gravity="center" android:gravity="center"
android:minHeight="48dp"
android:padding="5dp" android:padding="5dp"
android:text="2" android:text="1"
android:textColor="@color/ios_btntext_blue" android:textColor="@color/ios_btntext_blue"
android:textSize="@dimen/dialogui_btn_txt_size"/> android:textSize="@dimen/dialogui_btn_txt_size"/>
<View <View
android:id="@+id/line_btn3" android:id="@+id/line_btn3"
android:layout_width="1px" android:layout_width="1px"
......
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