Android 6.0.1 non è in grado di abilitare wifi hotspot in modo programmato

Quando ho cercato di abilitare il tethering wifi dal seguente codice, lancia l'exception

java.lang.reflect.InvocationTargetException al java.lang.reflect.Method.invoke (Metodo nativo) al com …..

  • Imansible importre le classi di android.hardware.camera2
  • android TextView: l'impostazione dynamic del colore di background non funziona
  • come aprire l'applicazione youtube da applicazione Android
  • tenta di riaprire un object già chiuso: SQLiteDatabase
  • Come get dettagli / text esteso da una notifica Android?
  • imeOptions "actionNext" in modo programmato - come saltare al field successivo?
  • …. non è concesso questo permesso: android.permission.WRITE_SETTINGS

    Ma questo funziona bene in android 6.0 e versioni successive. E anche provato con andando ad android.permission.WRITE_SETTINGS troppo.

    C'è qualche limitazione nell'accesso a wifiAP in android 6.1?

    Seguire ho allegato il codice che ho usato per abilitare hotspot.

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

  • Continuare il servizio anche se l'applicazione viene eliminata da App recente
  • Come aggirare l'angolo di un lato della visualizzazione di text in android
  • listview visualizza i dati dal database in android
  • Comunicazione tra i frammenti in ViewPager
  • Disegna una linea con bordi curvi in ​​Android
  • ArrayList non può essere lanciato alla class personalizzata che estende ArrayList
  • 4 Solutions collect form web for “Android 6.0.1 non è in grado di abilitare wifi hotspot in modo programmato”

    Questo non è il modo giusto. Ma questo ha risolto il problema.

    Ha modificato la versione di sdk di destinazione a 21. Quindi hotspot inizierà in modo programmato anche in android 6.0.1. Pensa che dovrebbe essere un modo adeguato per farlo per android 6 e versioni successive. Penso che richiedere le autorizzazioni di runtime ha bisogno di eseguire quel tipo di process. Questo parla dell'authorization android che richiede in runtime

    Penso che Android M non supporti per creare hotspot in modo programmato. Puoi portre l'utente di Marshmallow alla pagina delle impostazioni per creare hotspot da solo. il codice riportto di seguito aiuterà yo a passare alla pagina di impostazione.

      startActivity( new Intent(Settings.ACTION_SETTINGS)); 

    Impostare la versione SDK destinazione 21 e chiedere l'authorization write_settings nella tua attività. Aggiungi anche l'authorization di android.permission.WRITE_SETTINGS in manifesto.

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

    Per ulteriori informazioni, visita http://developer.android.com/training/permissions/requesting.html

    I ragazzi ho provato tutto e non ho potuto avviare il hotspot in Android 6.0. Puoi controllare solo se Api è> = 23 e se così prendi l'utente alla pagina delle impostazioni per creare hotspot da solo.

     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(); } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.