BindProcessToNetwork在特定设备上不起作用

时间:2019-03-15 08:10:52

标签: android httpurlconnection android-wifi android-connectivitymanager

我有一个专为客户端定制的应用程序,但Play商店中不提供该应用程序,该应用程序在检测到设备已连接至其WiFi时基本上会进行一些网络通话。即使没有 internet 连接,也应该发生这种情况,应用程序发出的每个请求都是针对本地地址的。
问题出在客户购买的新一批平板电脑上(Galaxy Tab Active 2,Android 8.1.0,内部版本号M1AJQ.T395XXU3BRJ5),与我所告诉的任何网络相比,它总是更喜欢与Internet访问连接绑定到。
WiFi->高级->切换到移动数据已被禁用,因此不应该如此。

这是直到现在为止我一直在使用的代码:

ConnectivityManager cm = (ConnectivityManager) getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
Network[] networks = cm.getAllNetworks();
for (int i = 0, networksLength = networks.length; !bound && i < networksLength; i++) {
    Network network = networks[i];
    if (correctNetwork(network)) { //SSID check
        bound = cm.bindProcessToNetwork(network);
        Log.i(TAG, "Bound? " + bound);
    }
}

在所有以前的设备上,我自己的手机甚至Galaxy Tab Active 1都可以正常运行:我们在日志中看到“ Bound?true”,并且每个连接都是通过正确的网络进行的。在Active 2上,我们始终会看到“ Bound?false”,它将使用4G连接。禁用数据不是一种选择。

如果这是三星错误,是否有解决方法?还是强制HttpURLConnection使用特定网络的另一种方法?

0 个答案:

没有答案