如何以编程方式在 Android Q 中打开设置面板?

Posted

技术标签:

【中文标题】如何以编程方式在 Android Q 中打开设置面板?【英文标题】:How to open Settings panel in Android Q programmatically? 【发布时间】:2019-12-03 19:57:18 【问题描述】:

根据Android Q的新功能,有一个内嵌设置面板显示关键的连接设置,让用户可以修改不同的连接设置,例如飞行模式、 wifi、音量、NFC 和互联网连接

如何从我的应用程序中以编程方式打开该设置面板?如下图所示。

【问题讨论】:

【参考方案1】:

使用 android Q 中可用的设置面板 API,这非常简单且易于实现。

很简单,我们需要使用新的Settings.Panel 操作之一来触发意图。

打开互联网连接面板:

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    Intent panelIntent = new Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 545)

科特林:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 545)

打开音量控制面板:

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    Intent panelIntent = new Intent(Settings.Panel.ACTION_VOLUME)
    startActivityForResult(panelIntent, 545)

科特林:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    val panelIntent = Intent(Settings.Panel.ACTION_VOLUME)
    startActivityForResult(panelIntent, 545)

打开WIFI面板:

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    Intent panelIntent = new Intent(Settings.Panel.ACTION_WIFI)
    startActivityForResult(panelIntent, 545)

科特林:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    val panelIntent = Intent(Settings.Panel.ACTION_WIFI)
    startActivityForResult(panelIntent, 545)

打开 NFC 面板:

Java:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    Intent panelIntent = new Intent(Settings.Panel.ACTION_NFC)
    startActivityForResult(panelIntent, 545)

科特林:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) 
    val panelIntent = Intent(Settings.Panel.ACTION_NFC)
    startActivityForResult(panelIntent, 545)

您可以在此处查看更多关于 Android 官方文档中设置面板的信息:

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

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

【讨论】:

startActivityForResult 的调用中的 545 是什么? @AdeleGoldberg 就是result的启动activity的请求代码,所以我们启动的activity在onActivityResult返回一个结果,你可以检查这个结果是哪个请求返回的。 @BirjuVachhani 文档中也提到“我们计划为此功能引入 AndroidX 包装器。当在运行 Android 9(API 级别 28)或更低版本的设备上调用时,包装器将打开设置应用程序中最合适的页面。” AndroidX 包装器是否已经引入? @MehulKanzariya 显然,包装器的想法已被取消:reddit.com/r/androiddev/comments/f574wo/…

以上是关于如何以编程方式在 Android Q 中打开设置面板?的主要内容,如果未能解决你的问题,请参考以下文章

如何以编程方式在应用程序设置中打开应用程序权限窗口[重复]

我们如何以编程方式在 Android Q OS 中实现可搜索的进度条?

以 Android 编程方式启用 GPS(无需导航到位置设置)

如何以编程方式在 Lollipop Android 中打开 FlashLight

如何以编程方式(使用 Intent)在 Android 中打开 My Files 文件夹?

以编程方式访问应用程序通知设置[重复]