Хотя \n
является верным символом новой строки для систем на основе Unix, другие системы могут использовать разные символы для представления конца строки. В частности, система Windows использует \r\n
и ранние системы MacOS, используемые \r
.
Используя %n
в вашей строке формата, вы говорите Java, чтобы использовать значение, возвращенное System.getProperty("line.separator")
, которое является разделителем строк для текущей системы.
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" />