Android Q - 连接WiFi无需批准

3

我正在开发一款可以自动连接 WiFi 的应用。以下是可正常工作的代码!

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    boutonConnecter.setOnClickListener {
        val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
            .setSsid("MYSSID")
            .setWpa2Passphrase("MyPassphrase")
            .build()

        val networkRequest = NetworkRequest.Builder()
            .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
            .setNetworkSpecifier(wifiNetworkSpecifier)
            .build()

        val connectivityManager =
            applicationContext.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager

        connectivityManager.requestNetwork(
            networkRequest,
            ConnectivityManager.NetworkCallback()
        )


    }
}

但是似乎在安卓Q(Android 10)中,在连接之前应用程序需要得到用户批准!它会弹出一个窗口,用户需要选择网络(批准)。

是否可以“绕过”用户批准?我想直接连接WiFi而不询问用户的批准...

这可行吗?

2个回答

6

Arf...谢谢你的回答,我以为有一种方法可以绕过用户隐私... - Nounet

4

实际上,有一种方法可以绕过用户批准流程,但需要在指定器中指定一个确切的SSID和BSSID。如果您知道设备的BSSID(通常是MAC地址),则可以将其添加到指定器中,这样就可以在不需要用户批准的情况下连接。应用程序将弹出一个对话框显示连接,但它应该会自动完成,无需用户按任何按钮。

 val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
            .setSsid("MYSSID")
            .setWpa2Passphrase("MyPassphrase")
            .setBssid(MacAddress.fromString(bssid))
            .build()

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