MainActivity.kt 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package com.example.modifier
  2. import android.content.DialogInterface
  3. import android.content.Intent
  4. import android.net.Uri
  5. import android.os.Bundle
  6. import android.provider.Settings
  7. import androidx.activity.enableEdgeToEdge
  8. import androidx.appcompat.app.AppCompatActivity
  9. import androidx.navigation.fragment.NavHostFragment
  10. import androidx.navigation.ui.NavigationUI.setupWithNavController
  11. import com.example.modifier.databinding.ActivityMainBinding
  12. import com.google.android.material.dialog.MaterialAlertDialogBuilder
  13. import kotlinx.coroutines.CoroutineScope
  14. import kotlinx.coroutines.Dispatchers
  15. import kotlinx.coroutines.delay
  16. import kotlinx.coroutines.launch
  17. import kotlinx.coroutines.withContext
  18. class MainActivity : AppCompatActivity() {
  19. private lateinit var mBinding: ActivityMainBinding
  20. override fun onCreate(savedInstanceState: Bundle?) {
  21. super.onCreate(savedInstanceState)
  22. this.enableEdgeToEdge()
  23. mBinding = ActivityMainBinding.inflate(layoutInflater)
  24. setContentView(mBinding.root)
  25. val navHostFragment =
  26. supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
  27. val controller = navHostFragment.navController
  28. setupWithNavController(mBinding.nav, controller)
  29. CoroutineScope(Dispatchers.IO).launch {
  30. if (!Settings.canDrawOverlays(this@MainActivity)) {
  31. Utils.enableOverlay()
  32. }
  33. if (Utils.hasRootAccess()) {
  34. if (!Utils.isAccessibilityEnabled()) {
  35. if (!Utils.enableAccessibility()) {
  36. val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS)
  37. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
  38. startActivity(intent)
  39. delay(1000);
  40. finish();
  41. }
  42. }
  43. Utils.runAsRoot(
  44. "settings put global window_animation_scale 0.0",
  45. "settings put global transition_animation_scale 0.0",
  46. "settings put global animator_duration_scale 0.0"
  47. )
  48. } else {
  49. withContext(Dispatchers.Main) {
  50. MaterialAlertDialogBuilder(this@MainActivity)
  51. .setTitle("No Root Access")
  52. .setMessage("Root access is required to run this app")
  53. .setCancelable(false)
  54. .setPositiveButton("Exit") { _: DialogInterface?, _: Int ->
  55. finish()
  56. }
  57. .show()
  58. }
  59. }
  60. }
  61. }
  62. }