我正在构建一款需要通过WiFi网络进行通信的Android应用,该网络不会有任何互联网接入。问题是,即使WiFi连接,当wifi网络上没有连接互联网时,android选择使用蜂窝/移动数据。强制Android使用无线网络,无网络
我已经阅读了许多帖子,其中许多涉及生根设备,但这是不可能与生产应用程序(生根设备是而不是选项)。其他解决方案(如我的代码波纹管)建议使用bindProcessToNetwork()
这完美的作品对我的索尼Z2但不能在其他设备上我已经在(所有正在运行的6.0.1)
private void bindToNetwork() {
final ConnectivityManager connectivityManager = (ConnectivityManager) mActivity.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new NetworkRequest.Builder();
//set the transport type do WIFI
builder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.requestNetwork(builder.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
connectivityManager.bindProcessToNetwork(null);
if (barCodeData.getSsid().contains("screenspace")) {
connectivityManager.bindProcessToNetwork(network);
}
} else {
//This method was deprecated in API level 23
ConnectivityManager.setProcessDefaultNetwork(null);
if (barCodeData.getSsid().contains("screenspace")) {
ConnectivityManager.setProcessDefaultNetwork(network);
}
}
connectivityManager.unregisterNetworkCallback(this);
}
});
}
}
你可以试试我在这个职位给了解决方案:https://stackoverflow.com/questions/42329775/using-a-wifi-without-internet-connection/46165010#46165010 –