编程

当前位置:澳门新莆京娱乐官网 > 编程 > 强制通过手机网络发送请求

强制通过手机网络发送请求

来源:http://www.drgigabytes.com 作者:澳门新莆京娱乐官网 时间:2020-03-30 15:52

急需如上,也许能够领略为 多网络可用景况下,怎么样利用钦命的互连网进行号令

实际上测量试验的时候,在wifi和手机网络都可用的前提下,在Android 5.x系统上,Nexus5 中兴Nokia等,在调用requestNetwork艺术之后,并不曾像官方网址描述这样,马上采纳移动网络打开号令,而是在自个儿手动关闭wifi之后,系统切换成运动互联网的时候才会呈请 = =!

可是在Android 6.0上,却足以至时利用移动互联网张开倡议

  1. 在Android 5.0事情发生前,在同期下,Android系统只可以同意一种网络项目连接。所以:

    1. 假诺你的Android手提式无线电话机系统在Android 5.0下
    2. 如今网络为wifi
    3. 然而想用手提式有线电话机网络发送有些需要
    4. 你只可以关闭wifi,展开移动互联网,才干达成那样子的三个须求

    具体达成参谋代码:

  2. Android 5.0以上,在同期下,Android系统则能够允大多互连网项目连接,在此样子的前提下,你就足以选用毕竟接收这种网络来实现你的诉求

    图片 1Paste_Image.png

if (Build.VERSION.SDK_INT >= 21) { final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest.Builder builder = new NetworkRequest.Builder(); // 设置指定的网络传输类型 等于手机网络 builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); // 设置感兴趣的网络功能 // builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); // 设置感兴趣的网络:计费网络 // builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); NetworkRequest request = builder.build(); ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() { /** * Called when the framework connects and has declared a new network ready for use. * This callback may be called more than once if the {@link Network} that is * satisfying the request changes. * */ @TargetApi(Build.VERSION_CODES.M) @Override public void onAvailable(Network network) { super.onAvailable; Log.i("test", "已根据功能和传输类型找到合适的网络"); // 通过network.openConnection 来获取URLConnection try { HttpURLConnection urlConnection = (HttpURLConnection) network.openConnection( new URL("http://www.baidu.com/s?wd=123")); } catch (IOException e) { e.printStackTrace(); } // 或者 raw Socket // network.bindSocket; // 只要一找到符合条件的网络就注销本callback // 你也可以自己进行定义注销的条件 connectivityManager.unregisterNetworkCallback; }; connectivityManager.registerNetworkCallback(request, callback); connectivityManager.requestNetwork(request, callback);}

if (Build.VERSION.SDK_INT >= 21) { final ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest.Builder builder = new NetworkRequest.Builder(); // 设置指定的网络传输类型 等于手机网络 builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); // 设置感兴趣的网络功能 // builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); // 设置感兴趣的网络:计费网络 // builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED); NetworkRequest request = builder.build(); ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() { /** * Called when the framework connects and has declared a new network ready for use. * This callback may be called more than once if the {@link Network} that is * satisfying the request changes. * */ @TargetApi(Build.VERSION_CODES.M) @Override public void onAvailable(Network network) { super.onAvailable; Log.i("test", "已根据功能和传输类型找到合适的网络"); // 可以通过下面代码将app接下来的请求都绑定到这个网络下请求 if (Build.VERSION.SDK_INT >= 23) { connectivityManager.bindProcessToNetwork; } else { // 23后这个方法舍弃了 ConnectivityManager.setProcessDefaultNetwork; } // 也可以在将来某个时间取消这个绑定网络的设置 // if (Build.VERSION.SDK_INT >= 23) { // onnectivityManager.bindProcessToNetwork; //} else { // ConnectivityManager.setProcessDefaultNetwork; //} // 只要一找到符合条件的网络就注销本callback // 你也可以自己进行定义注销的条件 connectivityManager.unregisterNetworkCallback; }; connectivityManager.requestNetwork(request, callback);}

本文由澳门新莆京娱乐官网发布于编程,转载请注明出处:强制通过手机网络发送请求

关键词:

上一篇:Canvas之绘制基本形状

下一篇:没有了