2016-04-07 17 views
0

Imagebutton aracılığıyla bir Web Görünümü açan bir uygulama programlıyorum. İnternet yoksa ve uygulama başlatıldığında "İnternet Yok" yazan küçük bir açılır pencere açılır. Eğer internet ile uygulamayı başlattıysam ve WebView'u kullanırken interneti kaybettiğimde çok çirkin bir ekran hata ile ortaya çıkıyor. İnternet yokken Web sayfamın yeni bir tarafa yüklenmesini nasıl engelleyebilirim? Küçük bir Tost açmalı veya "Bağlantı noktanızı kaybettiğiniz için üzgünüm: /" mesaj panosunu açmalı veya teşekkürler. İşteWebView'i Önleyin Yüklü İnternet yok

benim Kod

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(); 

      } 
    } 
} 

cevap

0

bu yöntemi deneyin - işe yarayacak olabilir. Bir proje yaptım ve bunu kullandım.

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; 
} 
} 
} 

ana kod olacak: -

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; 
} 
} 

Ben üst kısmını denedik ve ben başlarsanız çalıştı, çalışıyor :)

+0

öyledir yeni uygulama! "// URL'leri aynı web görünümünde tüm URL'leri yüklemek için" sonra bölüm çalışmıyor! – Viru

+0

Bu işe yarayacak bazı link kaybetme olabilir! Lütfen onay işaretine basarak cevabı kabul edin. – AgentLog

+0

herşeyi kabul eder (bu) kırmızı olarak adlandırılır! – Viru

İlgili konular