Как показать диалог «Нет подключения к Интернету» в веб-обозрении | Android Studio

Хотя \n является верным символом новой строки для систем на основе Unix, другие системы могут использовать разные символы для представления конца строки. В частности, система Windows использует \r\n и ранние системы MacOS, используемые \r.

Используя %n в вашей строке формата, вы говорите Java, чтобы использовать значение, возвращенное System.getProperty("line.separator"), которое является разделителем строк для текущей системы.

1
задан Zoe 1 April 2019 в 19:05
поделиться

1 ответ

1) Создайте DetectConnection.java Class , чтобы проверить доступность интернета или нет.

import android.content.Context;
import android.net.ConnectivityManager;


public class DetectConnection {             
  public static boolean checkInternetConnection(Context context) {   

    ConnectivityManager con_manager = (ConnectivityManager) 
      context.getSystemService(Context.CONNECTIVITY_SERVICE);

    return (con_manager.getActiveNetworkInfo() != null
        && con_manager.getActiveNetworkInfo().isAvailable()
        && con_manager.getActiveNetworkInfo().isConnected());
  }
}

2) Измените код метода onCreate, перед загрузкой проверьте, доступен ли Интернет,

wv = (WebView) findViewById(R.id.wv);
CustomWebViewClient c = new CustomWebViewClient();
wv.setWebViewClient(c);
wv.clearCache(true);
wv.clearHistory();
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wv.getSettings().setBuiltInZoomControls(true);
if (!DetectConnection.checkInternetConnection(this)) {
 wv.loadUrl("file:///android_asset/error.html"); //Change path if it is not correct
} else {      
 wv.loadUrl("http://www.google.com");
}

3) Измените код CustomWebViewClient. Это класс, где вы можете получить обратный вызов для каждого URL. В этом обратном вызове, когда страница загружается, вы можете проверить это.

// Function to load all URLs in same webview
    private class CustomWebViewClient extends WebViewClient {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {

                if(url.contains("//MyURL//")) {
                    view.loadUrl(url);
                } else {
                    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
                    startActivity(i);
                }

            return true;
        }

        @Override
        public void onLoadResource(WebView  view, String  url){
            if (!DetectConnection.checkInternetConnection(MainActivity.this)) {
                wv.loadUrl("file:///android_asset/error.html"); //Change path if it is not correct
            }
        }

    }

4) Добавить разрешение ACCESS_NETWORK_STATE в AndroidMenifest.xml.

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
0
ответ дан Nil 1 April 2019 в 19:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: