Android 不´;网络绑定是否适用于jni代码?
我知道我的用户连接到wifi而没有互联网,所以我将Android进程绑定到手机:Android 不´;网络绑定是否适用于jni代码?,android,go,java-native-interface,wifi,gomobile,Android,Go,Java Native Interface,Wifi,Gomobile,我知道我的用户连接到wifi而没有互联网,所以我将Android进程绑定到手机: private fun bindProcessToCellular() { val req = NetworkRequest.Builder() req.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) req.addTransportType(NetworkCapabilities.TRANSPO
private fun bindProcessToCellular() {
val req = NetworkRequest.Builder()
req.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
req.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
cm.requestNetwork(req.build(), object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
if (cm.bindProcessToNetwork(network)){
// YAY, process bound to cellular
}
}
})
}
现在,这在Kotlin/Android上非常有效——互联网请求通过Android/Kotlin的cellular代码按预期运行——但在我的gomobile库中却不行。从Go内部,请求只是超时。如果我断开wifi,所有Go请求都会成功,这让我觉得Go以某种方式解决了错误的网络
我的理解是gomobile在Andoroid JNI接口上运行,我的直觉是,bindProcessToNetwork
绑定所有东西,包括运行到该应用程序JNI接口的组件
有人知道这里可能发生了什么吗?可能的解决方法:
当用户第一次连接到此wifi(没有互联网)时,操作系统会询问用户“此wifi没有互联网,您还想连接吗?”如果用户随后取消,则设备实际上仍然连接到该wifi,但流量仍然通过蜂窝网络路由,包括在Go中创建的请求