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
Vous devez vous connecter pour publier un commentaire.
Pourriez-vous essayer de définir le paramètre global captive_portal_detection_enabled à 0 (false).
Ce qui se passe réellement est que, par défaut, à chaque fois que vous vous connectez à un wifi, l'aile de test sur un serveur (typiquement google) pour voir si c'est un captif wifi (besoins de connexion). Donc, si votre réseau n'est pas connecté à google, cette vérification échoue. Après cela, l'appareil sait que le wifi n'a pas de connexion internet et tout simplement pas autoconnect.
Réglage de ce paramètre à 0, permettra d'éviter cette case.
Par programmation
Settings.Global.putInt(getContentResolver(), Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED, 0);
Vous pouvez le faire par le biais de la bad pour des fins de test:
Et récupérer sa valeur comme ceci:
À mon humble avis ce n'est pas très belle chose à faire, puisque vous êtes la modification d'un paramètre pour l'utilisateur et beaucoup de FWs ne fournissent pas même un paramètre avancé pour activer/désactiver cette par l'utilisateur lui-même. (Google n'est pas). Mais peut-être qu'il s'adapte à vos besoins.
Espère que cela aide!
et la commande adb shell liste des paramètres globaux ne contient pas de captifs sur 6.0.1
Vous pourriez avoir besoin d'un accès root pour que, aussi CAPTIVE_PORTAL_DETECTION_ENABLED est caché, donc il n'y a pas de moyen facile de le tordre, essayez d'utiliser la chaîne "captive_portal_detection_enabled" directement, au lieu de la constante qui n'est pas visible. Aussi, en 6.0.1, pour assurer en captivité est là. Il a été là avant 6.0.1 aussi. suivez ce lien: android.stackexchange.com/questions/100657/...
il est là : public static final String CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled";. et MOVED_TO_GLOBAL.ajouter(Paramètres.Mondiale.CAPTIVE_PORTAL_DETECTION_ENABLED);
Est-il une solution qui n'implique pas d'accès à la racine ou de la bad?
OriginalL'auteur Olaia
Une non-solution racine qui est une sorte de hack tech. 😛
Je ne sais pas pourquoi, mais ça fonctionne...
Bien sûr, il fonctionne parfaitement mais je ne sais pas pourquoi. Dans mon cas, il doit être connecté/déconnecté avec le PC, et AP doit être activée/désactivée pour des milliers de fois. 😀
avez-vous essayé ce sur de nombreux téléphones et tablettes?
Deux appareils: Sony XZ et de la Nexus 9
OriginalL'auteur MewX