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

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

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

【问题讨论】:

    标签: android android-settings android-10.0


    【解决方案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/…
    猜你喜欢
    • 2013-10-31
    • 1970-01-01
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多