我正在尝试建立 SMB ( Samba ) 连接以获取文件列表并使用 smbj 库的SMBClient下载它们。
为此,我必须连接到特定的网络并使用该类,但在 Android QI 中必须更改连接到无线的方式,如下所示:
val wifiNetworkSpecifier: WifiNetworkSpecifier = WifiNetworkSpecifier.Builder().apply {
setSsid(ssid)
setWpa2Passphrase(password)
}.build()
val networkRequest: NetworkRequest = NetworkRequest.Builder().apply {
addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED)
setNetworkSpecifier(wifiNetworkSpecifier)
}.build()
val networkCallback: ConnectivityManager.NetworkCallback = object : ConnectivityManager.NetworkCallback() {
override fun onAvailable(network: Network) {
Log.d(tag, "::onAvailable - Entry")
super.onAvailable(network)
}
override fun onUnavailable() {
Log.d(tag, "::onUnavailable - Entry")
super.onUnavailable()
}
}
这会在应用程序中建立连接,但通过移动数据建立主连接,我无法建立连接,因为服务器无法访问。我必须找到一种方法来通过函数network
中的对象建立连接onAvailable
。
Did you know how or is there an alternative way?
解决方案
我在ConnectivityManager类中找到了一个方法,该方法是bindProcessToNetwork
connectivityManager.bindProcessToNetwork(network)