Android Q – подключить Wi-Fi без одобрения

Я разрабатываю приложение, которое автоматически подключается к Wi-Fi. Ниже вы найдете мой код, который хорошо работает!

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()
        )


    }
}

Но похоже, что с Android Q (Android 10) перед подключением приложению требуется одобрение пользователя! Открывается всплывающее окно, и пользователю необходимо выбрать сеть (одобрение).

Можно ли «обойти» одобрение пользователя? Я хотел бы подключиться напрямую к Wi-Fi, не спрашивая разрешения пользователя...

Является ли это возможным ?


person Nounet    schedule 01.11.2019    source источник


Ответы (2)


Нет, это невозможно с Android 10. Это изменение было куплено для Android 10 для обеспечения конфиденциальности пользователей. См. официальную документацию здесь: https://developer.android.com/about/versions/10/privacy/changes#enable-disable-wifi

person Community    schedule 01.11.2019
comment
Арф... Спасибо за ответ, я думал, что есть способ обойти конфиденциальность пользователя... - person Nounet; 01.11.2019

На самом деле есть способ обойти процесс утверждения пользователем, но он требует, чтобы вы указали точные SSID и BSSID в вашем спецификаторе. Если вы знаете BSSID (обычно mac-адрес) устройства, вы можете добавить его в спецификатор, и это позволит вам подключаться без одобрения пользователя. Приложение откроет диалоговое окно, показывающее соединение, но оно должно автоматически завершиться, и пользователю не нужно ничего нажимать для этого.

person Matt Wolfe    schedule 20.10.2020