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.