如何在Android中以编程方式关闭“请求使用WLAN”?

4

当我尝试更改WiFi状态时,在配备Android 5.1的三星SM-J5008真实手机上,我将获得“请求使用 WLAN 权限的应用。允许吗?”提示窗口。

我已经谷歌了一些信息,例如 https://groups.google.com/d/msg/tasker/C5ZgPA2J7aM/bH7j85buAAAJ

当我尝试更改 WiFi 状态时,会显示一个名为“请求使用 WLAN”的对话框,并要求我选择是否在更改 WiFi 状态时显示该对话框。

我希望可以以编程方式关闭“请求使用 WLAN”对话框,这样在我更改 WiFi 状态时就不会显示该对话框,请问我该如何做?谢谢!

图片

图片描述

新增内容

我使用以下代码设置 WiFi 的状态。

 fun setWiFi(aWiFiDef: WiFiDef){
        val wifiManager =mContext.applicationContext.getSystemService(WIFI_SERVICE) as WifiManager
        wifiManager.isWifiEnabled=aWiFiDef.status
    }

请问您能否分享一下用于打开和关闭WiFi的代码片段? - Sotiris S. Magionas
谢谢!您能否看一下我在问题中添加的内容? - HelloCW
2个回答

1
使用以下代码打开或关闭WiFi。确保您已添加了<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 权限,并注意可能需要将"this"替换为您的活动当前的context
        WifiManager wifiManager = (WifiManager) this.getApplicationContext().getSystemService(Context.WIFI_SERVICE);

        if(wifiManager.isWifiEnabled()){    // Is ON , switch it OFF

            wifiManager.setWifiEnabled(false);

        }else{                              // Is OFF, switch it ON

            wifiManager.setWifiEnabled(true);

        } 

使用这段代码,我可以在不需要额外对话框提示的情况下打开和关闭WiFi适配器。
以下是从developer.android.com获取的文档:

WifiManagerInfo

请确保您只尝试使用上述代码更改WiFi状态,并且在您的活动中没有任何其他代码尝试完成相同的事情。您的代码中可能会有一个侦听器检测到您意图更改WiFi状态(打开或关闭),并显示您向我们展示的对话框。找到它并删除它。
如果在这些更改之后仍然显示对话框,则如@VicJordan所说,这可能是OEM实现问题,在这种情况下我很抱歉,但我无法帮助您。
祝你好运!

谢谢!你的代码仍然需要显示对话框提示。 - HelloCW
你已经删除了之前使用的代码并用这段代码替换了它吗?还是两段代码都在依次执行? - Sotiris S. Magionas
确保在您的清单中具有以下权限(实际上您并不需要全部,但为了确保,请包含所有权限),然后用我的代码替换您的代码,并告诉我发生了什么。 - Sotiris S. Magionas

0

我认为你可以通过在清单文件中添加CHANGE_WIFI_STATE权限来实现它。

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

CHANGE_WIFI_STATE 是一项普通权限,因此可能可以跳过“请求使用 WLAN”弹窗。我说“可能”是因为这取决于 OEM 的定制方式,以及他们如何处理这个“请求使用 WLAN”弹窗。

希望这可以帮到你。


谢谢!我已添加 <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />,但仍然弹出提示窗口。 - HelloCW

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接