Die Idee ist, wenn keine Internetverbindung verfügbar ist, zeigen Sie meinen benutzerdefinierten Dialog für Benutzer, die anzeigt, dass keine Verbindung besteht. Wenn die Seite in WebView geladen wird, zeigen Sie andernfalls einen ProgressDialog an, um anzuzeigen, dass die Seite geladen wird, und wenn der Ladevorgang beendet wird. Wenn es eine Internetverbindung gibt, funktioniert dieser Code, aber wenn es keine gibt, stürzt es ab und ich kann nicht finden, wo der Fehler ist.Fehler beim Überprüfen der Internetverbindung in Android
package com.tariknotebook;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
public class NoteBook extends Activity {
/** Called when the activity is first created. */
WebView web;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
web = (WebView) findViewById(R.id.browserMine);
web.setWebViewClient(new HelloWebViewClient());
web.getSettings().setJavaScriptEnabled(true);
}
@Override
protected void onStart() {
// TODO Auto-generated method stub
super.onStart();
web.loadUrl("http://m.seslisozluk.com");
}
ProgressDialog dialog;
Dialog connDialog;
@Override
protected Dialog onCreateDialog(int id) {
switch(id)
{
case 1:
dialog = ProgressDialog.show(NoteBook.this, "Loading",
"Loading.. Please wait.");
break;
case 2:
connDialog = new Dialog(getApplicationContext());
connDialog.setContentView(R.layout.connection);
connDialog.setTitle("No Internet Connection");
Button closeButton = (Button) findViewById(R.id.closeButton);
closeButton.setOnClickListener(new closeButtonOnClickListener());
connDialog.show();
break;
}
return super.onCreateDialog(id);
}
private class closeButtonOnClickListener implements OnClickListener
{
public void onClick(View v) {
connDialog.dismiss();
};
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
ConnectivityManager conStatus = (ConnectivityManager) view.getContext().getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
if(conStatus.getActiveNetworkInfo().isConnected() && conStatus.getActiveNetworkInfo() != null)
showDialog(1);
else
showDialog(2);
}
@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
dialog.dismiss();
}
}
}
Und dies ist das Fehlerprotokoll auch:
Mein Bauch sagt mir, dass 'favicon' in 'OnPageStarted()' null ist, wenn Sie ohne Internetverbindung starten (weil es keine Verbindung zur Website herstellen kann, um das Favicon zu erhalten), aber ich bin mir nicht sicher auf diesem. Könnte auch sein, dass "conStatus" null ist, wenn Sie versuchen, seine Methoden aufzurufen, nehme ich an. Haben Sie versucht, dies in einem Debugger zu durchlaufen? – eldarerathis