Как установить SMB-соединение через сетевой объект в Android? - PullRequest
1 голос
/ 21 февраля 2020

Я пытаюсь установить соединение 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)

1 Ответ

0 голосов
/ 02 апреля 2020

Я нашел метод в классе ConnectivityManager, метод bindProcessToNetwork

connectivityManager.bindProcessToNetwork(network)
...