Android Studio Webview - не показывать сообщение о подключении вместо приложения Android после его загрузки вместо ERR_NAME_NOT_RESOLVED

У меня есть этот код для веб-просмотра, чтобы он показывал, когда в Android Studio нет соединения, он показывает сообщение, где нет соединения, а затем пользователь нажимает кнопку, чтобы увидеть, есть ли соединение снова, и он делает это хорошо, но только в первый раз это открывает. После того, как страница загружается с Интернетом, и вы переходите, если вы деактивируете Интернет и вводите любой URL-адрес, снова отображается ошибка 404 вместо отображения макета и кнопки для повторной попытки подключения к Интернету.

Вот код внутри другого сбоя, созданного с именем NoConnection.java, чтобы иметь больше порядка в кодировании. Было бы здорово, если бы вы сказали мне, что именно и где в коде, потому что я новичок в Android Studio.

import android.content.Context;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class NoConnection extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_no_connection);
    }


    public void retry(View view){


        if(isNetworkAvailable() == true){
            Intent Intent = new Intent(NoConnection.this, SplaceScreen.class);
            startActivity(Intent);
        }else{
            Toast.makeText(this, "No internet connection.", Toast.LENGTH_LONG).show();
        }


    }



    public boolean isNetworkAvailable() {
        // Get Connectivity Manager class object from Systems Service
        ConnectivityManager cm = (ConnectivityManager)  getSystemService(Context.CONNECTIVITY_SERVICE);

        // Get Network Info from connectivity Manager
        NetworkInfo networkInfo = cm.getActiveNetworkInfo();

        // if no network is available networkInfo will be null
        // otherwise check if we are connected
        if (networkInfo != null && networkInfo.isConnected()) {
            return true;
        }
        return false;
    }
}

Теперь, как я могу изменить его, чтобы он работал после загрузки веб-сайта, и вы переходите по нему, он показывает сообщение?

Заранее спасибо,

1 ответ

Решение здесь состоит в том, чтобы проверить isNetworkAvailable() каждый раз, когда вы нажимаете на ссылку (т.е. загружаете веб-страницу). Что вам нужно сделать, это прослушать событие urlLoad в WebView и перед загрузкой вызвать isNetworkAvailable(),

Вы можете сделать это, выполнив следующие действия:

  1. Установить WebViewClient в WebView.

  2. В вашем WebViewClientпереопределить shouldOverrideUrlLoading() метод. Этот метод будет вызываться каждый раз, когда URL-адрес загружается в WebView. Позвоните isNetworkAvailable() внутри этого метода обратного вызова. Есть еще один метод обратного вызова onPageStarted() это вызывается непосредственно перед загрузкой страницы. Вы также можете попробовать этот метод.

или же

  1. Вы можете попробовать переопределить onReceivedError() метод. Этот метод будет вызван, когда URL не удалось загрузить.

Есть много способов сделать это, поэтому посмотрите, что вам подходит, и продолжайте.

Другие вопросы по тегам