Android 6.0.1 n'a pas pu activer le point d'accès wifi par programme

Lorsque j'ai essayé d'activer wifi tethering à partir du code suivant, il lance l'exception

Java.lang.reflect.InvocationTargetException à java.lang.reflect.Method.invoke (Native Method) à com …..

…. n'a pas obtenu cette autorisation: android.permission.WRITE_SETTINGS

Mais cela fonctionne bien dans les versions android 6.0 et suivantes. Et a également essayé de donner à android.permission.WRITE_SETTINGS aussi.

Existe-t-il une limitation dans l'accès à wifiAP dans Android 6.1?

Suivez J'ai attaché l'exemple de code que j'ai utilisé pour activer le point chaud.

WifiConfiguration netConfig = new WifiConfiguration(); netConfig.SSID = ssId; netConfig.preSharedKey = passkey; netConfig.allowedAuthAlgorithms.set(WifiConfiguration.AuthAlgorithm.SHARED); netConfig.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); try { boolean apstatus = (Boolean) method.invoke(wifiManager, netConfig, true); for (Method isWifiApEnabledmethod : wmMethods) { if (isWifiApEnabledmethod.getName().equals("isWifiApEnabled")) { while (!(Boolean) isWifiApEnabledmethod.invoke(wifiManager)) {} for (Method method1 : wmMethods) { if (method1.getName().equals("getWifiApState")) { int apstate; apstate = (Integer) method1.invoke(wifiManager); Log.i(TAG, "Apstate ::: " + apstate); } } } } if (apstatus) { Log.d(TAG, "Access Point created"); } else { Log.d(TAG, "Access Point creation failed"); } } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (InvocationTargetException e) { e.printStackTrace(); } 

  • FIXE: Impossible de se connecter à adb sur wifi
  • Le fil de WifiManager Android ne s'arrête jamais
  • Est-il possible d'échanger des messages entre 2 périphériques Android via wifi?
  • Comment fournir une option pour sélectionner wi-fi ou GPRS pour la connectivité réseau dans l'application Android
  • Définissez l'IP statique et la passerelle par programme dans Android 6.x (Marshmallow)
  • Comment obtenir l'emplacement grossier en utilisant Wifi ou GSM ou GPS, selon ce qui est disponible?
  • Comment obtenir les détails du périphérique client qui est connecté au point d'accès Wi-Fi?
  • SCAN_RESULTS_AVAILABLE_ACTION retourne la liste vide dans Android 6.0
  • 4 Solutions collect form web for “Android 6.0.1 n'a pas pu activer le point d'accès wifi par programme”

    Ce n'est pas la bonne manière. Mais cela a résolu le problème.

    Modifié la version sdk cible à 21. Puis, le point chaud commence par programme, même dans Android 6.0.1. Pensez qu'il devrait y avoir une façon appropriée de le faire pour Android et versions ultérieures. Je pense que demander des autorisations d'exécution doit exécuter ce genre de processus. Cela parle de l'autorisation de l'application Android en cours d'exécution

    Je pense que l'Android M ne supporte pas de créer un point chaud par programme. Vous pouvez prendre votre utilisateur Marshmallow dans la page de configuration pour créer un point fort par lui-même. Le code ci-dessous vous aidera à définir la page de réglage.

      startActivity( new Intent(Settings.ACTION_SETTINGS)); 

    Définissez la SDK cible 21 et demandez l'autorisation write_settings dans votre activité. Ajoutez également l'autorisation android.permission.WRITE_SETTINGS en manifeste.

     if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.WRITE_SETTINGS)){ }else { ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_SETTINGS}, 121); } 

    Pour plus de détails, visitez http://developer.android.com/training/permissions/requesting.html

    Je l'ai essayé tout et je n'ai pas pu démarrer le point chaud dans Android 6.0. Vous pouvez simplement vérifier si Api est> = 23, et si tel est le cas, passez l'utilisateur à la page de configuration pour créer un point d'accès par lui-même.

     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { final Intent intent = new Intent(Intent.ACTION_MAIN, null); intent.addCategory(Intent.CATEGORY_LAUNCHER); final ComponentName cn = new ComponentName( "com.android.settings", "com.android.settings.TetherSettings"); intent.setComponent(cn); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity( intent); }else{ createhotSpot(); } 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.