我正在構建一款需要通過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 –