android 6.0.1 force de connexion wifi avec pas d'accès à internet

cela a beaucoup de questions similaires (google: "pas d'accès à internet détecté. ne sera pas automatiquement de se reconnecter." ou: android la force de la connexion wifi par programmation).

je pensais que j'avais une réponse ici, mais il a cessé de travailler après l'installation de mises à jour 6.0.1 (j'ai le 1 mai correctifs de sécurité).

semble que c'est un le changement de comportement.

j'ai quelques 2013 de la nexus 7 avec 6.0.1 exécuter un kiosque type d'application et que vous voulez vous connecter par programme à un réseau sans fil qui n'a pas de connexion internet. chaque tablette a une unique adresse ip statique de la forme: 192.168.0.xx. j'utilise la normale java socket constructeurs et vérifier pour voir si l'interface est en place à l'aide de: NetworkInterface.getNetworkInterfaces().

une connexion manuelle a été faite. parfois, il ya une boîte de dialogue qui vous demande si vous souhaitez ou non toujours se connecter. je vérifie toujours oui.

mais le wifi dit: "pas d'accès à internet détecté. ne pas se reconnecter automatiquement" une fois que le routeur cycles de puissance.

faire un décalage, d'activer la reconnexion n'a pas de travail. au mieux, il obtient: ip6-localhost/::1.

a quelqu'un avait de la chance, à l'aide d'un objet de requête, ou bindProcessToNetwork?

edit: liées.

edit: le problème semble être avec: CAPTIVE_PORTAL_DETECTION_ENABLED - cette chaîne semble être défini dans la source:

public static final String
        CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled";
    ...
    MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED);

mais jette" android.fournisseur de.Les paramètres$SettingNotFoundException: captive_portal_detection_enabled lorsqu'utilisé de façon explicite et n'est pas visible pour android studio.

aussi, faire une liste de paramètres global ne contiennent pas de la constante.

modifier faire une commande adb shell réglages global captive_portal_detection_enabled 0 n'a l'air de fonctionner, mais cela ne peut être fait dans le champ lorsque le routeur cycles de puissance. cette valeur semble persister lorsque la tablette cycles de puissance. et maintenant, cette valeur s'affiche dans une liste de paramètres globaux. aussi, à l'aide de la chaîne brute: les Paramètres.Mondiale.getInt(getContentResolver(),"captive_portal_detection_enabled"); maintenant, retourne 0.

edit: regarde comme paramètre, il nécessite: android.la permission.WRITE_SECURE_SETTINGS, mais bien sûr, cela échoue lorsqu'il est mis dans le manifeste, nous ne sommes pas une application système.

edit: en essayant de exec de la commande shell lance: java.lang.SecurityException, de sorte qu'il ressemble, vous devez émettre la commande à partir de la bad 🙁

grâce

OriginalL'auteur Ray Tayek | 2016-05-13