相关疑难解决方法(0)

android 6.0.1强制wifi连接,无法访问互联网

这有很多类似的问题(谷歌:"没有检测到互联网访问.不会自动重新连接."或:android force wifi连接编程).

我以为我在这里有一个答案,但它在安装6.0.1更新后停止工作(我可能有1个安全补丁).

似乎这是一种行为改变.

我有一些2013年nexus 7和6.0.1运行一个自助服务终端类型的应用程序,并希望以编程方式连接到没有互联网连接的特定无线网络.每个平板电脑都有一个唯一的静态IP地址:192.168.0.xx. 我使用普通的java套接字构造函数并检查接口是否正在使用:NetworkInterface.getNetworkInterfaces().

手动连接已经完成.有时会出现一个对话框,询问您是否要始终连接.我总是检查是的.

但wifi说:"在路由器重启电源后,没有检测到互联网接入.不会自动重新连接".

断开连接,启用,重新连接不起作用.它最多得到:ip6-localhost/:: 1.

有没有人有使用请求对象或bindProcessToNetwork的运气?

编辑:相关.

编辑:问题似乎与:CAPTIVE_PORTAL_DETECTION_ENABLED - 此字符串似乎在源中定义:

public static final String
        CAPTIVE_PORTAL_DETECTION_ENABLED = "captive_portal_detection_enabled";
    ...
    MOVED_TO_GLOBAL.add(Settings.Global.CAPTIVE_PORTAL_DETECTION_ENABLED);
Run Code Online (Sandbox Code Playgroud)

但抛出"android.provider.Settings $ SettingNotFoundException:captive_portal_detection_enabled明确使用时,android studio不可见.

另外,执行全局设置列表不包含常量.

编辑一个adb shell设置put global captive_portal_detection_enabled 0似乎确实有效,但是当路由器重启电源时,这不能在现场完成.当平板电脑循环供电时,这个值似乎仍然存在.现在这个值显示在全局设置列表中.另外,使用原始字符串:Settings.Global.getInt(getContentResolver(),"captive_portal_detection_enabled"); 现在返回0.

编辑:看起来像设置它需要:android.permission.WRITE_SECURE_SETTINGS,但当然放入清单时失败,因为我们不是系统应用程序.

编辑:尝试执行shell命令抛出:java.lang.SecurityException,所以看起来你需要从adb发出命令:(

谢谢

android network-programming android-wifi android-6.0-marshmallow

13
推荐指数
1
解决办法
1万
查看次数