如何以编程方式在 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