2016-04-07 13 views
0

ImageButtonでWebViewを開くアプリをプログラミングしました。インターネットがなく、アプリが起動している場合、「インターネットなし」と表示されるポップアップが表示されます。私がインターネットでアプリを起動し、WebViewの使用中にインターネットを失った場合、非常に醜い画面がエラーで表示されます。インターネットがなくても小さなトーストを開くか、 "あなたの接続を忘れてしまった:/"と書かれたテキストフィールドがあれば、私はどのように新しい面を読み込むのを防ぐことができますか、ありがとう!ここでインターネットがなくてもWebViewが読み込まれないようにする

私のコード

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

      } 
    } 
} 

答えて

0

これをやって試してみてください - は、それが動作するように。私はプロジェクトを作ってこれを使いました。

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

メインのコードは次のようになります -

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

私は上部を試み、それは私が開始した場合働いていた、それが動作:)

+0

をそう願っています新しいアプリ! "//同じWebview内のすべてのURLを読み込む関数"の後の部分は機能しません! – Viru

+0

それはうまくいくかもしれないいくつかのリンクを失うかもしれない!ティックマークを押して、回答を「受け入れてください」。 – AgentLog

+0

すべてが罰金を受け入れる(これ)は赤と呼ばれています! – Viru

関連する問題