desc:应用内自己实现恢复出厂设置功能

main
xiaowusky 2 years ago
parent a5d55cd849
commit 32532c035e

@ -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")
}
}
}

@ -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//居中
}
}

@ -0,0 +1,49 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="@dimen/_480dp"
android:layout_height="@dimen/_320dp"
android:background="@drawable/warn_setting_btn_bg"
android:orientation="vertical">
<TextView
android:id="@+id/tip"
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_gravity="center"
android:layout_marginTop="@dimen/_36dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/sync_data_tip"
android:textColor="@color/white"
android:textSize="@dimen/_30dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<TextView
android:id="@+id/tv_cancel"
android:layout_width="0dp"
android:layout_height="@dimen/_81dp"
android:layout_weight="1"
android:background="@drawable/cancel_btn_bg"
android:focusable="true"
android:gravity="center"
android:focusedByDefault="true"
android:text="@string/cancel"
android:textColor="@color/white_30"
android:textSize="@dimen/_36dp" />
<TextView
android:id="@+id/tv_confirm"
android:layout_width="0dp"
android:layout_height="@dimen/_81dp"
android:layout_weight="1"
android:background="@drawable/confirm_btn_bg"
android:focusable="true"
android:gravity="center"
android:text="@string/confirm"
android:textColor="@color/white"
android:textSize="@dimen/_36dp" />
</LinearLayout>
</LinearLayout>

@ -58,4 +58,6 @@
<string name="connecting_camera">正在连接摄像头...</string>
<string name="repeat_click_sync_tip">正在同步中,请勿重复点击</string>
<string name="confirm_clear_data_tip">确定恢复出厂设置?</string>
</resources>

Loading…
Cancel
Save