Is it possible to turn on airplane mode manually?

105 views Asked by At

ex. I've created a simple app in Android Studio using Kotlin, with only button to turn on airplane mode. Is it possible to do it in newer versions of Android? your text I've tried to do it using permissions in manifest.xml:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />

class MainActivity : AppCompatActivity() {
    private val REQUEST_CODE_AIRPLANE_MODE = 1
    private val REQUEST_CODE_WRITE_SETTINGS = 123

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val button = findViewById<Button>(R.id.button)
        button.setOnClickListener{
            val intent = Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS)
            val builder = AlertDialog.Builder(this)
            builder.setMessage("Czy chcesz włączyć tryb samolotowy?")
            builder.setPositiveButton("Tak") { dialog, which ->
                // sprawdzenie, czy aplikacja ma uprawnienia do zmiany ustawień systemowych
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                    !Settings.System.canWrite(this)) {
                    // jeśli aplikacja nie ma uprawnień, wywołanie okna dialogowego o prośbie o uprawnienia
                    val intent = Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS)
                    intent.data = Uri.parse("package:$packageName")
                    startActivityForResult(intent, REQUEST_CODE_AIRPLANE_MODE)
                    //startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS)
                } else {
                    intent.putExtra("extra_airplane_mode_enabled", true)
                    sendBroadcast(intent)
                }
            }
            builder.setNegativeButton("Nie", null)
            builder.show()
        }

    }

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        if (requestCode == REQUEST_CODE_AIRPLANE_MODE) {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
                Settings.System.canWrite(this)
            ) {
                // jeśli użytkownik przyznał uprawnienia, włączenie trybu samolotowego
                val intent = Intent(Settings.ACTION_AIRPLANE_MODE_SETTINGS)
                intent.putExtra("extra_airplane_mode_enabled", true)
                sendBroadcast(intent)
            }
        }
        super.onActivityResult(requestCode, resultCode, data)
    }

}

But I only got, systems settings with slider, but if I turned it on, nothing happened.

0

There are 0 answers