Commit 5896f532 by Baoxy

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

parent 7808bffa
......@@ -80,7 +80,7 @@
<activity android:name=".settings.wifi.WifiWhiteListActivity"
android:excludeFromRecents="true"/>
<activity android:name=".function.setting.AdminSettingActivity"
<activity android:name=".function.setting.SettingAdminActivity"
android:theme="@style/SettingTheme"
android:excludeFromRecents="true"/>
......
......@@ -5,7 +5,7 @@
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"
tools:context="com.android.launcher3.function.setting.AdminSettingActivity">
tools:context="com.android.launcher3.function.setting.SettingAdminActivity">
<TextView
android:id="@+id/tv_setting_title"
......
......@@ -153,6 +153,7 @@ import com.android.launcher3.widget.WidgetAddFlowHandler;
import com.android.launcher3.widget.WidgetHostViewLoader;
import com.android.launcher3.widget.WidgetsContainerView;
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.InitEvent;
import com.secspace.lib.common.event.RefreshWorkSpaceEvent;
......@@ -1211,12 +1212,6 @@ public class Launcher extends BaseActivity
}
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();
if (app != null) {
app.getModel().forceReload();
......@@ -3121,7 +3116,7 @@ public class Launcher extends BaseActivity
if (TextUtils.equals(((EditText)view).getText().toString(), Prefs.getLoginPwd(mAppContext))) {
IntentUtil.startExitService(mAppContext);
} else {
ToastUtil.showLong(mAppContext, "密码错误!");
DialogUIUtils.showToastCenter("密码错误");
ErrorTimeHelper.getInstance(mAppContext).addErrorCount();
}
}
......
......@@ -9,8 +9,9 @@ import android.text.TextUtils;
import android.view.View;
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.secspace.lib.common.dialog.other.DialogUIUtils;
import com.secspace.lib.common.function.DialogManager;
import com.secspace.lib.common.utils.InputUtil;
import com.secspace.lib.common.utils.Prefs;
......@@ -37,14 +38,13 @@ public class ManagerAuthActivity extends BaseActivity {
boolean canInputPwd = ErrorTimeHelper.getInstance(mAppContext).canInputPwd();
if (canInputPwd){
if (TextUtils.equals(editText.getText().toString(), Prefs.getLoginPwd(mAppContext))) {
ToastUtil.showLong(mAppContext, "密码正确!");
finish();
ErrorTimeHelper.getInstance(mAppContext).resetLockTimeAndCount();
Intent intent = new Intent();
intent.setClass(mAppContext, AdminSettingActivity.class);
intent.setClass(mAppContext, SettingAdminActivity.class);
startActivity(intent);
} else {
ToastUtil.showLong(mAppContext, "密码错误!");
DialogUIUtils.showToastCenter("密码错误");
ErrorTimeHelper.getInstance(mAppContext).addErrorCount();
finish();
}
......
......@@ -27,7 +27,7 @@ import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import org.greenrobot.eventbus.EventBus
class AdminSettingActivity : BaseActivity() {
class SettingAdminActivity : BaseActivity() {
private var mContext: Context? = null
private var icon: QMUICommonListItemView? = null
private var reinforce: QMUICommonListItemView? = null
......
package com.android.launcher3.function.setting
import android.app.Activity
import android.app.AlertDialog
import android.content.Context
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.widget.GridLayout
import android.widget.LinearLayout
import android.widget.TextView
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.dialog.SwitcherDialog
import com.secspace.lib.common.event.ChangeWallPaperEvent
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.UninstallUtil.removeForbidden
import com.secspace.lib.common.utils.UninstallUtil.uninstallService
import com.secspace.lib.common.utils.dp2px
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(){
private var mContext: Context? = null
......@@ -85,60 +70,4 @@ class SettingPwdActivity : BaseActivity(){
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;
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.function.DialogManager;
import com.secspace.lib.common.utils.IntentUtil;
......@@ -26,6 +28,12 @@ public class BlankActivity extends BaseActivity {
DialogManager.INSTANCE.showPrivacyPolicyDialog(this);
return;
}
String pwd = Prefs.getLoginPwd(this);
if (TextUtils.isEmpty(pwd)) {
Intent intent = new Intent(this, PwdPinSetPwdActivity.class);
startActivity(intent);
return;
}
IntentUtil.startEduLauncher(this);
}
......
......@@ -96,7 +96,7 @@ object ActivationHelper {
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) {
val file = File(FILE_PATH + context.packageName, PROBATION_FILE_NAME)
if (!file.exists()) {
......
......@@ -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.active
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 {
private var mActivity: Activity?
......@@ -64,10 +60,7 @@ class BuyCodeDialog(activity: Activity) : DialogInterface.OnDismissListener, Vie
}
}, true)
dismiss()
Prefs.setMdmInitializedWhenEnter(mContext, false)
GlobalScope.launch(Dispatchers.IO) {
SwitchOutMdm.onInit(mContext)
}
WorkManager.removeForbidden(mContext)
}
}
......
......@@ -94,6 +94,18 @@ object DialogManager{
}).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) {
DialogUIUtils.showAlert(activity, title, content, "", "", "确定", "", false, false, false, object : DialogUIListener() {
override fun onPositive() {
......
......@@ -176,7 +176,11 @@ public class PrivacyPolicyDialog implements DialogInterface.OnDismissListener, V
mActivity.finish();
} else if (v.getId() == R.id.btn_accept) {
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();
mActivity.finish();
}
......
......@@ -19,7 +19,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch
import java.io.File
object WorkManager{
object WorkManager {
private val TAG = "SecSpaceWorkManager"
private lateinit var mContext: Context
private val mHandler: Handler = Handler(Looper.getMainLooper(), Handler.Callback { true })
......@@ -50,7 +50,7 @@ object WorkManager{
//安装耗时,检查是否都是最新的
if (!DpmHelper.getInstance(mContext).isMiddlewareLatest) {
Log.i(TAG, "will install delay")
mHandler.postDelayed( { enter(launcher) }, 2000)
mHandler.postDelayed({ enter(launcher) }, 2000)
return
}
LoadingDialog.getInstance(launcher).show("切换中")
......@@ -63,7 +63,7 @@ object WorkManager{
Prefs.setMdmInitializedWhenEnter(mContext, true)
}
fun exit(context: Context?){
fun exit(context: Context?) {
GlobalScope.launch(Dispatchers.IO) {
context?.let { SwitchOutMdm.onExit(it) }
}
......@@ -140,18 +140,43 @@ object WorkManager{
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 {
override fun needActivate() {
Log.i(TAG, "activedFailed: ")
DialogManager.showMessageDialogBySure(activity, activity.getString(R.string.common_remind), activity.getString(R.string.dialog_tip_activate_lose), object: DialogManager.MessageListener{
override fun onPositive() {
IntentUtil.startExitService(activity)
GlobalScope.launch(Dispatchers.Main) {
val isActivateLocal = ActivationHelper.isProbationFromLocal(activity)
if (isActivateLocal) {
return@launch
}
override fun onNegative() {
}
})
DialogManager.showActivateLoseDialog(activity, activity.getString(R.string.common_remind), activity.getString(R.string.dialog_tip_activate_lose), object : DialogManager.MessageListener {
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() {
......
......@@ -92,15 +92,16 @@
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:id="@+id/btn_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@drawable/dialogui_selector_left_bottom"
android:background="@drawable/dialogui_selector_all_no"
android:gravity="center"
android:minHeight="48dp"
android:padding="5dp"
android:text="1"
android:text="2"
android:textColor="@color/ios_btntext_blue"
android:textSize="@dimen/dialogui_btn_txt_size"/>
......@@ -111,19 +112,20 @@
android:background="@color/line_dd"/>
<Button
android:id="@+id/btn_2"
android:id="@+id/btn_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="1"
android:background="@drawable/dialogui_selector_all_no"
android:background="@drawable/dialogui_selector_left_bottom"
android:gravity="center"
android:minHeight="48dp"
android:padding="5dp"
android:text="2"
android:text="1"
android:textColor="@color/ios_btntext_blue"
android:textSize="@dimen/dialogui_btn_txt_size"/>
<View
android:id="@+id/line_btn3"
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