当APK未指定使用网络类型时,APK会按照系统配置的默认网络优先顺序选择使用的网络,默认使用系统当前的网络。
例如,此时系统选择使用的为移动网络,则APK会采用对应的移动网络。
如果想要指定APK使用网络类型,使用ConnectivityManager提供的setProcessDefaultNetwork接口,便可以设置当前apk使用的网络类型。
具体使用的接口以及实现方法,如下,
public void selectNetworkType() {
ConnectivityManager connectivityManager = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkRequest.Builder mRequest = new NetworkRequest.Builder();
//mRequest.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);//选择使用移动数据网络
mRequest.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);//选择使用WiFi网络
ConnectivityManager.NetworkCallback callback = new ConnectivityManager.NetworkCallback() {
@Override
public void onAvailable(Network network) {
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
connectivityManager.setProcessDefaultNetwork(network);//使用所选网络
} else {
connectivityManager.bindProcessToNetwork(network);
}
}
};
connectivityManager.requestNetwork(mRequest.build(), callback);//检测到合适的网络时主动切换到该网络
}