Java 当wifi和蜂窝数据都打开且wifi没有互联网连接时,使用蜂窝数据上网

Java 当wifi和蜂窝数据都打开且wifi没有互联网连接时,使用蜂窝数据上网,java,android,android-layout,kotlin,networking,Java,Android,Android Layout,Kotlin,Networking,目前的用例是这样的,我们必须维护Wifi P2P连接,当使用Wifi P2P连接接收到一些回调时,我们必须使用蜂窝数据将其推送到API,而不中断Wifi P2P连接 Wifi没有互联网连接,因此必须使用手机数据将接收到的信息推送到API 我通过搜索类似的SO帖子尝试了这一点: class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCr

目前的用例是这样的,我们必须维护Wifi P2P连接,当使用Wifi P2P连接接收到一些回调时,我们必须使用蜂窝数据将其推送到API,而不中断Wifi P2P连接

Wifi没有互联网连接,因此必须使用手机数据将接收到的信息推送到API

我通过搜索类似的SO帖子尝试了这一点:

class MainActivity : AppCompatActivity() {

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    forceConnectionToMobile2()

    button.setOnClickListener {
        Log.v("sahil", "${isConnected()}")
    }
}

fun forceConnectionToMobile2() {
    val connection_manager = getSystemService(CONNECTIVITY_SERVICE) as ConnectivityManager
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        val request = NetworkRequest.Builder()
        Log.d("sahil", "request TRANSPORT_CELLULAR")

        request.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR)
        request.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)

        connection_manager.requestNetwork(request.build(), object : NetworkCallback() {

            override fun onAvailable(network: Network) {
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    Log.d("sahil", "binding app to cellular network")
                    connection_manager.bindProcessToNetwork(network)
                }
            }
        })
    }
}

@Throws(InterruptedException::class, IOException::class)
fun isConnected(): Boolean {
    val command = "ping -c 1 google.com"
    return Runtime.getRuntime().exec(command).waitFor() == 0
}
}
当我使用其他没有互联网连接的设备的热点将我的设备连接到wifi并打开手机数据时,“isConnected()”中出现“False”

即使设备已连接到Wifi,我应该如何强制使用手机数据