2016-04-07 5 views
0

Ich habe eine App programmiert, die ein WebView über Imagebutton öffnet. Wenn es kein Internet gibt und die App gestartet wird, erscheint ein kleines Popup mit der Meldung "Kein Internet". Wenn ich die App mit Internet gestartet habe und ich das Internet während der Verwendung des WebView verloren habe, erscheint ein sehr hässlicher Bildschirm mit einem Fehler. Wie kann ich verhindern, dass mein Webview eine neue Seite lädt, wenn kein Internet vorhanden ist, sollte ein kleiner Toast öffnen oder Textfeld mit "Sorry du hast deine Verbindung verloren: /", danke!Verhindern, dass WebView geladen wird, wenn kein Internet vorhanden ist

Hier mein Code

public static boolean checkInternetConnection(Context context) { 
     ConnectivityManager con_manager = (ConnectivityManager) 
       context.getSystemService(Context.CONNECTIVITY_SERVICE); 
     if (con_manager.getActiveNetworkInfo() != null 
       && con_manager.getActiveNetworkInfo().isAvailable() 
       && con_manager.getActiveNetworkInfo().isConnected()) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
    private ImageButton Ilias_link; 
    private ImageButton Lsf_link; 
    private WebView mWebView; 
    @Override 
    protected void onCreate(final Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     AdView mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     mAdView.loadAd(adRequest); 
     if (!MainActivity.checkInternetConnection(this)) { 
      Toast.makeText(getApplicationContext(), "Du hast leider kein Internet", Toast.LENGTH_SHORT).show(); 
     } else { 
      Ilias_link = (ImageButton) findViewById(R.id.ilias_link); 
     mWebView = new WebView(this); 
     Ilias_link.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       mWebView.getSettings().setJavaScriptEnabled(true); 
       mWebView.getSettings().setBuiltInZoomControls(true); 
       mWebView.getSettings().setDisplayZoomControls(false); 
       mWebView.getSettings().setSupportZoom(true); 
       if (savedInstanceState == null) 
        mWebView.loadUrl("https://elearns02.fh-biberach.de/ilias3/login.php?target=&soap_pw=&ext_uid=&cookies=nocookies&client_id=HSBC&lang=de"); 
        mWebView.setWebViewClient(new WebViewClient()); 
        setContentView(mWebView);} 
     }); 
      Lsf_link = (ImageButton) findViewById(R.id.lsf_link); 
      mWebView = new WebView(this); 
      Lsf_link.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        mWebView.getSettings().setJavaScriptEnabled(true); 
        mWebView.getSettings().setBuiltInZoomControls(true); 
        mWebView.getSettings().setDisplayZoomControls(false); 
        mWebView.getSettings().setSupportZoom(true); 
        if (savedInstanceState == null) 
         mWebView.loadUrl("https://lsf.fh-biberach.de/qisserver/rds?state=user&type=0"); 
        mWebView.setWebViewClient(new WebViewClient()); 
        setContentView(mWebView);{ 
        }}; 


      }) 
      ;} 
    ImageButton imageButton = (ImageButton)findViewById((R.id.Mensaplan)); 
    imageButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(MainActivity.this, "Comming soon ;)",Toast.LENGTH_LONG).show(); 
     } 
    });} 
    public void onPageFinished(WebView view, String url) { 
     String javascript="javascript:document.getElementsByName('viewport')[0].setAttribute('content', 'initial-scale=1.0,maximum-scale=10.0');"; 
     view.loadUrl(javascript); 
    } 
    @Override 
    protected void onSaveInstanceState(Bundle outState) 
    { 
     super.onSaveInstanceState(outState); 
     mWebView.saveState(outState); 
    } 
    @Override 
    protected void onRestoreInstanceState(Bundle savedInstanceState) 
    { 
     super.onRestoreInstanceState(savedInstanceState); 
     mWebView.restoreState(savedInstanceState); 
    } 
    private static final int TIME_INTERVAL = 3000; 
    private long mBackPressed; 
    @Override 
     public void onBackPressed() { 
      if (mWebView.canGoBack()) { 
       mWebView.goBack(); 
       return; 
      } else 
      { if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis()) 
      { 
       super.onBackPressed(); 
       return; 
      } 
      else { Toast.makeText(getBaseContext(), "Tap back button in order to exit", Toast.LENGTH_SHORT).show(); } 
       mBackPressed = System.currentTimeMillis(); 

      } 
    } 
} 

Antwort

0

Versuchen Sie dies tun - sein kann, es wird funktionieren. Ich habe ein Projekt gemacht und dieses genutzt.

DetectConnection.java

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

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

if (con_manager.getActiveNetworkInfo() != null 
    && con_manager.getActiveNetworkInfo().isAvailable() 
    && con_manager.getActiveNetworkInfo().isConnected()) { 
    return true; 
} else { 
    return false; 
} 
} 
} 

Der Hauptcode wird sein: -

if (!DetectConnection.checkInternetConnection(this)) { 
Toast.makeText(getApplicationContext(), "No Internet!",  Toast.LENGTH_SHORT).show(); 
} else {  
wv = (WebView) findViewById(R.id.donate_webView1); 
c = new CustomWebViewClient(); 
wv.setWebViewClient(c); 
wv.clearCache(true); 
wv.clearHistory(); 
wv.getSettings().setJavaScriptEnabled(true); 
wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
wv.getSettings().setBuiltInZoomControls(true); 
wv.loadUrl("http://www.google.com"); 
} 


// Function to load all URLs in same webview 
private class CustomWebViewClient extends WebViewClient { 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
if (!DetectConnection.checkInternetConnection(this)) { 
    Toast.makeText(getApplicationContext(), "No Internet!",Toast.LENGTH_SHORT).show(); 
} else { 
    view.loadUrl(url); 
}  
return true; 
} 
} 

Ich hoffe, es funktioniert :)

+0

so, habe ich versucht, den oberen Teil und es funktionierte, wenn ich anfangen die App neu! Der Teil nach "// Funktion zum Laden aller URLs in derselben Webansicht" funktioniert nicht! – Viru

+0

Es wird funktionieren, Sie können einige Link verlieren! Bitte 'Akzeptieren' Sie die Antwort, indem Sie das Häkchen drücken. – AgentLog

+0

alles in Ordnung das (das) heißt rot! – Viru