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()
,
Вы можете сделать это, выполнив следующие действия:
Установить
WebViewClient
в WebView.В вашем
WebViewClient
переопределитьshouldOverrideUrlLoading()
метод. Этот метод будет вызываться каждый раз, когда URL-адрес загружается в WebView. ПозвонитеisNetworkAvailable()
внутри этого метода обратного вызова. Есть еще один метод обратного вызоваonPageStarted()
это вызывается непосредственно перед загрузкой страницы. Вы также можете попробовать этот метод.
или же
- Вы можете попробовать переопределить
onReceivedError()
метод. Этот метод будет вызван, когда URL не удалось загрузить.
Есть много способов сделать это, поэтому посмотрите, что вам подходит, и продолжайте.