MainActivity.kt 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. package com.example.modifier
  2. import android.content.DialogInterface
  3. import android.content.Intent
  4. import android.os.Bundle
  5. import android.provider.Settings
  6. import android.util.Log
  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.example.modifier.utils.enableAccessibility
  13. import com.example.modifier.utils.enableOverlay
  14. import com.example.modifier.utils.getIPAddress
  15. import com.example.modifier.utils.hasRootAccess
  16. import com.google.android.material.dialog.MaterialAlertDialogBuilder
  17. import kotlinx.coroutines.CoroutineScope
  18. import kotlinx.coroutines.Dispatchers
  19. import kotlinx.coroutines.delay
  20. import kotlinx.coroutines.launch
  21. import kotlinx.coroutines.withContext
  22. class MainActivity : AppCompatActivity() {
  23. private lateinit var mBinding: ActivityMainBinding
  24. override fun onCreate(savedInstanceState: Bundle?) {
  25. super.onCreate(savedInstanceState)
  26. enableEdgeToEdge()
  27. mBinding = ActivityMainBinding.inflate(layoutInflater)
  28. setContentView(mBinding.root)
  29. val navHostFragment =
  30. supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
  31. val controller = navHostFragment.navController
  32. setupWithNavController(mBinding.nav, controller)
  33. CoroutineScope(Dispatchers.IO).launch {
  34. if (hasRootAccess()) {
  35. if (!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. enableOverlay()
  43. } else {
  44. withContext(Dispatchers.Main) {
  45. MaterialAlertDialogBuilder(this@MainActivity)
  46. .setTitle("No Root Access")
  47. .setMessage("Root access is required to run this app")
  48. .setCancelable(false)
  49. .setPositiveButton("Exit") { _: DialogInterface?, _: Int ->
  50. System.exit(0)
  51. }
  52. .show()
  53. }
  54. }
  55. Log.i("getIPAddress", getIPAddress().joinToString())
  56. }
  57. }
  58. }