BindProcessToNetwork在特定设备上不起作用

问题描述 投票:0回答:1

我有一个专为客户端定制的应用程序,但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使用特定网络的替代方法?

android httpurlconnection android-wifi android-connectivitymanager
1个回答
0
投票

您有没有得到答案?我遇到了完全相同的问题,试图从非互联网连接的网络上的服务器下载文件,而bindtonetwork在Galaxy Tab S6上什么也没做。

© www.soinside.com 2019 - 2024. All rights reserved.