PermissionsActivity.kt raw
1 package io.github.domi04151309.alwayson.activities
2
3 import android.content.ComponentName
4 import android.content.Intent
5 import android.os.Bundle
6 import android.provider.Settings
7 import android.view.Gravity
8 import android.widget.EditText
9 import android.widget.Toast
10 import androidx.preference.Preference
11 import androidx.preference.PreferenceFragmentCompat
12 import androidx.preference.SwitchPreference
13 import com.google.android.material.dialog.MaterialAlertDialogBuilder
14 import io.github.domi04151309.alwayson.R
15 import io.github.domi04151309.alwayson.helpers.PreferenceScreenHelper
16 import io.github.domi04151309.alwayson.helpers.Root
17
18 class PermissionsActivity : BaseActivity() {
19 override fun onCreate(savedInstanceState: Bundle?) {
20 super.onCreate(savedInstanceState)
21 setContentView(R.layout.activity_settings)
22 supportFragmentManager
23 .beginTransaction()
24 .replace(R.id.settings, PreferencePermissions())
25 .commit()
26 }
27
28 class PreferencePermissions : PreferenceFragmentCompat() {
29 override fun onCreatePreferences(
30 savedInstanceState: Bundle?,
31 rootKey: String?,
32 ) {
33 addPreferencesFromResource(R.xml.pref_permissions)
34 PreferenceScreenHelper.linkPreferenceToActivity(
35 this,
36 "ignore_battery_optimizations",
37 Intent(Settings.ACTION_IGNORE_BATTERY_OPTIMIZATION_SETTINGS),
38 )
39 findPreference<Preference>("device_admin")?.setOnPreferenceClickListener {
40 val dialogView = layoutInflater.inflate(R.layout.dialog_device_admin, null, false)
41 val editText = dialogView.findViewById<EditText>(R.id.editText)
42 MaterialAlertDialogBuilder(requireContext())
43 .setTitle(R.string.device_admin)
44 .setView(dialogView)
45 .setPositiveButton(android.R.string.ok) { _, _ ->
46 if (editText.text.toString().trim() == "19") {
47 startActivity(
48 Intent().apply {
49 component =
50 ComponentName(
51 "com.android.settings",
52 "com.android.settings.Settings\$DeviceAdminSettingsActivity",
53 )
54 },
55 )
56 } else {
57 Toast.makeText(
58 requireContext(),
59 R.string.dialog_device_admin_error,
60 Toast.LENGTH_LONG,
61 ).show()
62 }
63 }
64 .setNegativeButton(android.R.string.cancel) { _, _ -> }
65 .show()
66 true
67 }
68 findPreference<Preference>("root_mode")?.setOnPreferenceClickListener {
69 if (!Root.request()) {
70 val toast =
71 Toast.makeText(context, R.string.setup_root_failed, Toast.LENGTH_LONG)
72 toast.setGravity(Gravity.CENTER, 0, 0)
73 toast.show()
74 (it as SwitchPreference).isChecked = false
75 }
76 true
77 }
78 }
79 }
80 }
81