Ich bin Neuling in Android-Programmierung, erstellte ich Webview App für meine Website, so weit kein Problem, bis Internet-Verbindung verloren ist, kann ich verhindern, URL-Seite zu öffnen Ich klicke auf einen Link von Webview
ohne Show "Webseite nicht verfügbar"?Verhindern das Öffnen einer URL in einer Webansicht, wenn die Internetverbindung verloren ist
Mein Erwartetes Ergebnis ist:
anzeigen Toast "Keine Internetverbindung" und Noch im gleichen Seite wenn ich Link klicken in Webview
ich versuche, in onReceivedError zu verwenden:
if (wv.canGoBack()) {wv.goBack();}
aber immer noch, zeige "Webseite nicht verfügbar" und zurück zur vorherigen Seite
PS:Dieser Code anzeigen Toast "Keine Internetverbindung", zeigen aber immer noch "die Seite nicht verfügbar"
MyCode
MainActivity.java
import android.content.Context;
import android.content.DialogInterface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
WebView wv;
String URL;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(!isNetworkAvailable()){
Toast.makeText(getApplicationContext(),"No Internet Connection",Toast.LENGTH_SHORT).show();
}else{
URL = "Https://resiongkir.dzakiyyah.com";
wv = (WebView)findViewById(R.id.web);
wv.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url){
findViewById(R.id.imageView1).setVisibility(View.GONE);
findViewById(R.id.web).setVisibility(View.VISIBLE);
}
@Override
public void onReceivedError(WebView view, int errorCode,String description, final String failingUrl) {
Toast.makeText(getApplicationContext(), "No Internet Connection Or " + description , Toast.LENGTH_LONG).show();
super.onReceivedError(view, errorCode, description, failingUrl);
}
});
wv.getSettings().setJavaScriptEnabled(true);
wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
wv.getSettings().setBuiltInZoomControls(true);
wv.loadUrl(URL);
}
}
private boolean isNetworkAvailable(){
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnectedOrConnecting();
}
@Override
public void onBackPressed(){
if(wv.canGoBack()){
wv.goBack();
}else{
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Anda yakin akan menutup ResiOngkir?")
.setCancelable(false)
.setPositiveButton("Ya", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
MainActivity.this.finish();
}
})
.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert = builder.create();
alert.show();
}
}
}
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.dzakiyyah.abu.resiongkir.MainActivity">
<ImageView
android:id="@+id/imageView1"
android:layout_width="228dp"
android:layout_height="216dp"
android:layout_marginBottom="8dp"
android:layout_marginEnd="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:contentDescription="@string/app_logo"
android:visibility="visible"
app:layout_constraintBottom_toTopOf="@+id/textView"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.975"
app:srcCompat="@drawable/muava" />
<WebView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/web"
android:visibility="gone"/>
</android.support.constraint.ConstraintLayout>
Was wollen Sie stattdessen zeigen? Weil der Toast verschwindet, aber etwas muss gezeigt werden? – Xenolion
Wenn ich auf Link klicke, zeige nur Toast, ohne dass die Webseite nicht verfügbar ist –
Diese API definiert nur eine Möglichkeit, das Laden von Seiten abzufangen - indem man webClient die Substate-Antwort mit seiner eigenen in 'shouldInterceptRequest' lässt. Ich bezweifle, dass das für dich wirklich funktionieren wird. –