使用 bindProcessToNetwork 绑定到蜂窝网络不起作用
Binding to cellular network with bindProcessToNetwork does not work
我正在尝试按需绑定到蜂窝网络(wifi 仍然是 运行)。我有以下代码:
override fun onAvailable(network: Network) {
super.onAvailable(network)
Toast.makeText(this@MainActivity, "CELLULAR READY", Toast.LENGTH_SHORT).show()
Log.e("darran", "network info is: " +connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE))
Log.e("darran", "network is metered: " +connectivityManager.isActiveNetworkMetered)
Log.e("darran", "bind is tru: " +connectivityManager.bindProcessToNetwork(network))
Log.e("darran", "bound network is: " +connectivityManager.boundNetworkForProcess)
GlobalScope.launch {
fetchIp(network)
}
}
当我在 wifi 可用时尝试绑定到蜂窝网络时 boundNetworkForProcess
不是蜂窝网络,但仍然是 wifi 网络。
如果我禁用 wifi 网络,这将每次都有效。
我在以太网和 wifi 之间立即绑定也没有问题。看来即使有网络也不能按需绑定移动数据。如何在不考虑其他网络状态的情况下立即绑定到蜂窝网络?
完整项目在这里:
Android 通过开发者选项公开 属性,让您始终保持移动数据处于活动状态。启用此标志允许您在 wifi 和蜂窝数据连接之间切换,并立即在请求的网络上发出成功的网络请求。
此标志也定义为全局设置。
Settings.Global.MOBILE_DATA_ALWAYS_ON
我正在尝试按需绑定到蜂窝网络(wifi 仍然是 运行)。我有以下代码:
override fun onAvailable(network: Network) {
super.onAvailable(network)
Toast.makeText(this@MainActivity, "CELLULAR READY", Toast.LENGTH_SHORT).show()
Log.e("darran", "network info is: " +connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE))
Log.e("darran", "network is metered: " +connectivityManager.isActiveNetworkMetered)
Log.e("darran", "bind is tru: " +connectivityManager.bindProcessToNetwork(network))
Log.e("darran", "bound network is: " +connectivityManager.boundNetworkForProcess)
GlobalScope.launch {
fetchIp(network)
}
}
当我在 wifi 可用时尝试绑定到蜂窝网络时 boundNetworkForProcess
不是蜂窝网络,但仍然是 wifi 网络。
如果我禁用 wifi 网络,这将每次都有效。
我在以太网和 wifi 之间立即绑定也没有问题。看来即使有网络也不能按需绑定移动数据。如何在不考虑其他网络状态的情况下立即绑定到蜂窝网络?
完整项目在这里:
Android 通过开发者选项公开 属性,让您始终保持移动数据处于活动状态。启用此标志允许您在 wifi 和蜂窝数据连接之间切换,并立即在请求的网络上发出成功的网络请求。
此标志也定义为全局设置。
Settings.Global.MOBILE_DATA_ALWAYS_ON