Как отловить ошибку интернет-исключения? - PullRequest
1 голос
/ 24 сентября 2019

Я занимаюсь разработкой приложения для Android с шаблоном kotlin MVVM, проблема в том, что я получаю данные из сети, и даже я делаю исключение для случаев, когда нет подключения к Интернету, даже если приложение всегда вылетает с LOGCAT: недопустимое исключение: не можетподключиться к ..... Любая помощь с этим, пожалуйста?Я попытался добавить перехватчик и после этого поймать это:

class NoConnectivityException () : IOException()
class ApiException() : IOException()

//and inside reopistory 
//

try {
            val fetchData =
                retrofitInterface
                    .getAll()
                    .await()
            _downloadedResponse.postValue(fetchData)
        } catch (e: NoConnectivityException) {

        } catch (a: ApiException) {

        }


//my interceptor interface :
interface ConnectivityInteceptor : Interceptor
//my interceptor implementation :

class ConnectivityInteceptorImpl(
    context: Context
) : ConnectivityInteceptor {
    private val appContext = context.applicationContext
    override fun intercept(chain: Interceptor.Chain): Response {
        if (!isOnLine())
            throw NoConnectivityException()
        return chain.proceed(chain.request())
    }

    private fun isOnLine(): Boolean {
        val connectivityManager = appContext.getSystemService(Context.CONNECTIVITY_SERVICE)
                as ConnectivityManager
        val networkInfo  = connectivityManager.activeNetworkInfo
        return networkInfo != null && networkInfo.isConnected

    }
}

1 Ответ

0 голосов
/ 24 сентября 2019

Для обнаружения интернет-соединения на устройстве, в дополнение к указанному выше коду, вам необходимо добавить разрешение в манифест.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...