diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt index cf03fc0..d065d46 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/SettingActivity.kt @@ -7,9 +7,16 @@ import android.view.View import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivitySettingBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity +import com.yinuo.safetywatcher.watcher.ui.view.ConfirmDialog class SettingActivity : NoOptionsActivity() { + private val resetFactoryDialog by lazy { + ConfirmDialog() { + resetEverything() + } + } + private val mBinding: ActivitySettingBinding by lazy { ActivitySettingBinding.inflate(layoutInflater) } @@ -49,20 +56,12 @@ class SettingActivity : NoOptionsActivity() { startActivity(Intent(this@SettingActivity, NetSettingActivity::class.java)) } itemRecovery.setOnClickListener { - try { - val intent = Intent(Intent.ACTION_VIEW) - intent.component = - ComponentName("com.android.settings", "com.android.settings.SubSettings") - intent.putExtra(":settings:show_fragment", "com.android.settings.MasterClear") - startActivity(intent) - } catch (e: Exception) { - Log.w(this@SettingActivity.javaClass.name, "$e.message") - } + resetFactoryDialog.show(supportFragmentManager, "resetDialog") } } } - fun resetEverything() { + private fun resetEverything() { val intent = Intent("android.intent.action.FACTORY_RESET") intent.setPackage("android") intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND); @@ -70,4 +69,16 @@ class SettingActivity : NoOptionsActivity() { intent.putExtra("com.android.internal.intent.extra.WIPE_ESIMS", false) sendBroadcast(intent); } + + private fun go2RestPage() { + try { + val intent = Intent(Intent.ACTION_VIEW) + intent.component = + ComponentName("com.android.settings", "com.android.settings.SubSettings") + intent.putExtra(":settings:show_fragment", "com.android.settings.MasterClear") + startActivity(intent) + } catch (e: Exception) { + Log.w(this@SettingActivity.javaClass.name, "$e.message") + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/ConfirmDialog.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/ConfirmDialog.kt new file mode 100644 index 0000000..f4a80a0 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/view/ConfirmDialog.kt @@ -0,0 +1,55 @@ +package com.yinuo.safetywatcher.watcher.ui.view + +import android.graphics.Color +import android.graphics.drawable.ColorDrawable +import android.os.Bundle +import android.view.Gravity +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.fragment.app.DialogFragment +import com.yinuo.safetywatcher.R +import com.yinuo.safetywatcher.databinding.LayoutConfirmDialogBinding + +class ConfirmDialog( + private val tipResID: Int = R.string.confirm_clear_data_tip, + private val onConfirmClick: (() -> Unit?)? = null +) : + DialogFragment() { + + var dialogBinding: LayoutConfirmDialogBinding? = null + + override fun onCreateView( + inflater: LayoutInflater, + container: ViewGroup?, + savedInstanceState: Bundle? + ): View? { + dialogBinding = LayoutConfirmDialogBinding.inflate(inflater, container, false) + dialogBinding!!.tip.text = getString(tipResID) + dialogBinding!!.tvConfirm.setOnClickListener { + onConfirmClick?.invoke() + } + dialogBinding!!.tvCancel.setOnClickListener { + this@ConfirmDialog.dismiss() + } + return dialogBinding!!.root + } + + @Deprecated("Deprecated in Java") + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + initWindow() + } + + private fun initWindow() { + //初始化window相关表现 + val window = dialog?.window + //设备背景为透明(默认白色) + window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) + //设置window宽高(单位px) + window?.attributes?.width = 480 + window?.attributes?.height = 320 + //设置window位置 + window?.attributes?.gravity = Gravity.CENTER//居中 + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/layout_confirm_dialog.xml b/app/src/main/res/layout/layout_confirm_dialog.xml new file mode 100644 index 0000000..e079976 --- /dev/null +++ b/app/src/main/res/layout/layout_confirm_dialog.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index af546ca..82c843a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -58,4 +58,6 @@ 正在连接摄像头... 正在同步中,请勿重复点击 + + 确定恢复出厂设置?