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