How to open Settings panel in Android Q programmatically?

Bir*_*ani 1 android android-settings android-10.0

As per Android Q new features, there is a inline settings panel showing key connectivity settings that lets the user modify different connectivity settings such as airplane mode, wifi, volume, NFC and internet connectivity.

How can I open that settings panel programmatically from my app? like in screenshot below.

在此处输入图片说明

Bir*_*ani 6

This is very simple and easy to implement using Settings panel API available in Android Q.

Simple we need to trigger intent with one of the new Settings.Panel actions.

To open Internet Connectivity Panel:

在此处输入图片说明

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    Intent panelIntent = new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)

Kotlin:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)


To open Volume control panel:

在此处输入图片说明

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)

Kotlin:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_VOLUME)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)


To open WIFI panel:

在此处输入图片说明

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    Intent panelIntent = new Intent(Settings.Panel.ACTION_VOLUME)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)

Kotlin:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_WIFI)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)


To open NFC panel:

在此处输入图片说明

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_VOLUME)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)

Kotlin:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_NFC)
    startActivityForResult(panelIntent, 545)
}
Run Code Online (Sandbox Code Playgroud)

Here you can check more about settings panel from Android official doc:

1) https://developer.android.com/preview/features#settings-panels

2) https://developer.android.com/reference/android/provider/Settings.Panel

  • @BirjuVachhani 文档中还提到“我们计划为此功能引入 AndroidX 包装器。当在运行 Android 9(API 级别 28)或更低版本的设备上调用时,包装器将在“设置”应用程序中打开最合适的页面”。AndroidX 包装器引入了吗? (2认同)