我知道我的用户连接到没有互联网的 wifi,所以我将 Android 进程绑定到蜂窝:
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 代码的蜂窝按预期运行,但不是来自我的 gomobile 库。在 Go 中,请求只是超时。如果我断开 wifi,所有 Go 请求都会成功,这让我认为 Go 以某种方式解决了错误的网络。
我的理解是 gomobile 在 Andoroid JNI 接口上运行,我的直觉是bindProcessToNetwork
绑定所有东西,包括向该应用程序的 JNI 接口运行的组件。
有人知道这里可能发生了什么吗?