Я пытаюсь установить соединение SMB ( Samba ), чтобы получить список файлов и загрузить их с помощью библиотеки SMBClient из smbj .
Для этого мне нужно подключиться к определенной c сети и использовать этот класс, но в Android Q я должен изменить способ подключения к беспроводной сети, например:
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()
}
}
Это устанавливает соединение в приложении, но устанавливает основное соединение через мобильные данные, и я не могу установить sh соединение, потому что сервер недоступен. Мне нужно найти способ установить соединение через объект network
в функции onAvailable
.
Did you know how or is there an alternative way?
Решение
Я нашел метод в классе ConnectivityManager , метод bindProcessToNetwork
connectivityManager.bindProcessToNetwork(network)