package com.example.modifier import android.content.DialogInterface import android.content.Intent import android.net.Uri import android.os.Bundle import android.provider.Settings import androidx.activity.enableEdgeToEdge import androidx.appcompat.app.AppCompatActivity import androidx.navigation.fragment.NavHostFragment import androidx.navigation.ui.NavigationUI.setupWithNavController import com.example.modifier.databinding.ActivityMainBinding import com.google.android.material.dialog.MaterialAlertDialogBuilder import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.delay import kotlinx.coroutines.launch import kotlinx.coroutines.withContext class MainActivity : AppCompatActivity() { private lateinit var mBinding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) this.enableEdgeToEdge() mBinding = ActivityMainBinding.inflate(layoutInflater) setContentView(mBinding.root) val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment val controller = navHostFragment.navController setupWithNavController(mBinding.nav, controller) CoroutineScope(Dispatchers.IO).launch { if (!Settings.canDrawOverlays(this@MainActivity)) { Utils.enableOverlay() } if (Utils.hasRootAccess()) { if (!Utils.isAccessibilityEnabled()) { if (!Utils.enableAccessibility()) { val intent = Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS) intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK) startActivity(intent) delay(1000); finish(); } } Utils.runAsRoot( "settings put global window_animation_scale 0.0", "settings put global transition_animation_scale 0.0", "settings put global animator_duration_scale 0.0" ) } else { withContext(Dispatchers.Main) { MaterialAlertDialogBuilder(this@MainActivity) .setTitle("No Root Access") .setMessage("Root access is required to run this app") .setCancelable(false) .setPositiveButton("Exit") { _: DialogInterface?, _: Int -> finish() } .show() } } } } }