Android 当wifi连接到棉花糖中的OBD时,通过移动数据访问互联网
我同时启用了WIFI和移动数据。在wifi中,我已连接到一个没有互联网连接的OBD,但如果连接,将传输一些数据。为了启动该流,我使用了以下代码:Android 当wifi连接到棉花糖中的OBD时,通过移动数据访问互联网,android,android-6.0-marshmallow,connectivity,Android,Android 6.0 Marshmallow,Connectivity,我同时启用了WIFI和移动数据。在wifi中,我已连接到一个没有互联网连接的OBD,但如果连接,将传输一些数据。为了启动该流,我使用了以下代码: ConnectivityManager connectivityManager = (ConnectivityManager) getCurrentActivity().getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo ni = connectivityManage
ConnectivityManager connectivityManager = (ConnectivityManager) getCurrentActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = connectivityManager.getActiveNetworkInfo();
if (SDK_INT >= LOLLIPOP) {
NetworkRequest.Builder request = new NetworkRequest.Builder();
request.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
connectivityManager.registerNetworkCallback(request.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
if (SDK_INT >= LOLLIPOP && SDK_INT < M) {
ConnectivityManager.setProcessDefaultNetwork(network);
} else if (SDK_INT >= M) {
connectivityManager.bindProcessToNetwork(network);
}
}
});
}
发生的情况是,当我调试此过程时,NetworkInfo
始终具有WIFI连接,即使它点击了onAvailable
方法
请指出我是否在某个地方出错或遗漏了什么。我不确定这是否会影响OBD流(从未尝试过),但您是否尝试设置“ConnectionManager.setNetworkPreference(ConnectionManager.TYPE_MOBILE);”流启动后?你解决过这个问题吗?我正在尝试做一些非常类似的事情。你能解决这个问题吗?很抱歉延迟回复。但我们转向了另一种解决方案,即OBD不需要WiFi。无法找到此问题的任何解决方案。
ConnectivityManager connectivityManager = (ConnectivityManager) getCurrentActivity().getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = connectivityManager.getActiveNetworkInfo();
if (SDK_INT >= LOLLIPOP) {
NetworkRequest.Builder request = new NetworkRequest.Builder();
request.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
connectivityManager.registerNetworkCallback(request.build(), new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
if (SDK_INT >= LOLLIPOP && SDK_INT < M) {
ConnectivityManager.setProcessDefaultNetwork(network);
} else if (SDK_INT >= M) {
connectivityManager.bindProcessToNetwork(network);
}
}
});
}