Как справиться со случаем, когда вход в FirebaseAuth не выполняется из-за отсутствия сети? - PullRequest
1 голос
/ 28 мая 2019

Я пытаюсь реализовать аутентификацию входа с помощью FirebaseAuth, используя signInWithEmailAndPassword() для моего приложения для Android. Как я могу справиться со случаем, когда интернет-соединение отключено, чтобы я мог сгенерировать Toast message относительно проблемы с сетью.

Ответы [ 3 ]

0 голосов
/ 29 мая 2019

Немного покопавшись, я обнаружил, что его можно обработать, используя OnFailureListener, так как Exception, сгенерированный signInWithEmailAndPassword(), является экземпляром FirebaseNetworkException.

0 голосов
/ 29 мая 2019

Вы можете использовать этот фрагмент кода:

public static boolean hasActiveInternetConnection(Context context) {
    if (isNetworkAvailable(context)) {
        try {
            HttpURLConnection urlc = (HttpURLConnection) (new URL("http://www.google.com").openConnection());
            urlc.setRequestProperty("User-Agent", "Test");
            urlc.setRequestProperty("Connection", "close");
            urlc.setConnectTimeout(1500); 
            urlc.connect();
            return (urlc.getResponseCode() == 200);
        } catch (IOException e) {
        Log.e(LOG_TAG, "Error checking internet connection", e);
        }
    } else {
    Log.d(LOG_TAG, "No network available!");
    }
    return false;
}

, а также добавьте это в свой Manifest.xml:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
0 голосов
/ 28 мая 2019

Вот как я это делаю, я создаю класс ... и затем использую следующий код.

 public class InternetStatus {

    private static InternetStatus instance = new InternetStatus();
    static Context context;
    ConnectivityManager connectivityManager;
    NetworkInfo wifiInfo, mobileInfo;
    boolean connected = false;

    public static InternetStatus getInstance(Context ctx) {
        context = ctx.getApplicationContext();
        return instance;
    }

    public boolean isOnline() {
        try {
            connectivityManager = (ConnectivityManager) context
                    .getSystemService(Context.CONNECTIVITY_SERVICE);

            NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
            connected = networkInfo != null && networkInfo.isAvailable() &&
                    networkInfo.isConnected();
            return connected;


        } catch (Exception e) {
            System.out.println("CheckConnectivity Exception: " + e.getMessage());
            Log.v("connectivity", e.toString());
        }
        return connected;
    }


}

А затем, чтобы использовать его ...

if (InternetStatus.getInstance(getApplicationContext()).isOnline()) {
        Log.i(TAG, "User is online");
        // proceed with your firebase auth code.
    } else {
        Log.e(TAG, "User does not have an internet connection");
        //create a toast message, or however you want to handle this error.
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...