Как подключить WIFI с помощью ssid и пароля в android Q? - PullRequest
0 голосов
/ 13 января 2020

Я хочу подключиться к сети Wi-Fi, используя SSID и пароль в android Q, ниже приведен мой код для подключения.

  private void connect(String ssid,String password){
       WifiNetworkSpecifier.Builder builder = new WifiNetworkSpecifier.Builder();
       builder.setSsid(ssid);
       builder.setWpa2Passphrase(password);

       WifiNetworkSpecifier wifiNetworkSpecifier = builder.build();

       NetworkRequest.Builder networkRequestBuilder = new NetworkRequest.Builder();
       networkRequestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
       networkRequestBuilder.setNetworkSpecifier(wifiNetworkSpecifier);

       NetworkRequest networkRequest = networkRequestBuilder.build();
       cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);

       networkCallback = new ConnectivityManager.NetworkCallback(){
           @Override
           public void onAvailable(@NonNull Network network) {
               super.onAvailable(network);
               Log.d(TAG, "onAvailable: "+network);
               cm.bindProcessToNetwork(network);
           }
       };
       cm.requestNetwork(networkRequest, networkCallback);
   }

и добавить следующее разрешение в манифесте.

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

, но до сих пор я получил ошибку ниже.

Caused by: java.lang.SecurityException: com.a.wifidemoproject was not granted  either of these permissions: android.permission.CHANGE_NETWORK_STATE, android.permission.WRITE_SETTINGS.
    at android.os.Parcel.createException(Parcel.java:2074)
    at android.os.Parcel.readException(Parcel.java:2042)
    at android.os.Parcel.readException(Parcel.java:1990)
    at android.net.IConnectivityManager$Stub$Proxy.requestNetwork(IConnectivityManager.java:3494)
    at android.net.ConnectivityManager.sendRequestForNetwork(ConnectivityManager.java:3562)
    at android.net.ConnectivityManager.requestNetwork(ConnectivityManager.java:3594)
    at android.net.ConnectivityManager.requestNetwork(ConnectivityManager.java:3670)
    at android.net.ConnectivityManager.requestNetwork(ConnectivityManager.java:3631)

Как дать android.permission.CHANGE_NETWORK_STATE, android.permission.WRITE_SETTINGS. Как решить эту проблему и успешно подключиться к сети Wi-Fi в Android Q.

1 Ответ

0 голосов
/ 13 января 2020

Просто сделайте то, что говорит исключение: объявите разрешения в файле манифеста следующим образом:

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