1. app 可以用ConnectivityManager.setProcessDefaultNetwork() 接口来选择需用的网络类型,例如下面代码选择移动网络上网:
private void chooseNetwork(){ ConnectivityManager cm = (ConnectivityManager) this .getSystemService(Context.CONNECTIVITY_SERVICE); Network[] networks = cm.getAllNetworks(); boolean result = false ; for ( int i = 0 ; i < networks.length; i++) { NetworkInfo netInfo = cm.getNetworkInfo(networks[i]); if (netInfo.getType() == ConnectivityManager.TYPE_MOBILE) { //foundMobile = true; Log.d(TAG, "Found potential network: setting default..." ); result = ConnectivityManager.setProcessDefaultNetwork(networks[i]); Log.d(TAG, "Result: " + result); } if (result) { Log.d(TAG, "Success! Restricted to: " + netInfo.toString()); break ; } } } |
2. 也可根据需要设置路由规则(可用ip rule命令)让不同的应用走不同的网络,具体方法请在网上搜索下