2011-01-14 4 views
1

WebView 앱이 있으며 앱 내부의 모든 동작과 인터넷 연결을 확인해야합니다. 다음 코드는 앱 시작시 인터넷을 확인하는 코드입니다. 그러나 나는 사용자가 webview에서 페이지를 변경할 때마다이 검사를하는 방법을 알아야합니다.외부 세션을 통한 웹 뷰 연결 확인

내 코드 :

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    if(!isNetworkConnectionAvailable()){ 
     Context context = getApplicationContext(); 
     CharSequence text = "Sorry you need an Internet connection! Please try again when the network" + 
       " is available."; 
     int duration = Toast.LENGTH_LONG; 

     Toast toast = Toast.makeText(context, text, duration); 
     toast.show(); 

     finish(); 
    } 

    mWebView = (WebView) findViewById(R.id.webview); 
    mWebView.getSettings().setJavaScriptEnabled(true); 
    mWebView.loadUrl("http://example.com/"); 

    mWebView.setWebViewClient(new MyAppViewClient()); 
} 

그리고 이것은 내 연결이 확인되는 코드 :

public boolean isNetworkConnectionAvailable() { 
    ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 
    NetworkInfo netInfo = cm.getActiveNetworkInfo(); 

    if (netInfo != null && netInfo.isConnectedOrConnecting()){ 
     return true; 
    } 
    else{ 
     return false; 
    } 

} 

이 가능합니까?

답변

0

나는 새 URL로드 요청이 방법을 감지 할 수 있다고 생각 :

private class MyWebViewClient extends WebViewClient { 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      view.loadUrl(url); 
      return true; 
     } 
    } 

내가 웹뷰에서 링크를 클릭하면 새로운 활동을 열지 않도록 해당 기능을 무시할 수 배웠습니다. 이 함수는 사용자가 URL을 클릭 할 때마다 호출됩니다. 난 당신이 거기에 연결 확인 논리를 연결할 수있을 것 같아요.

왜 이것을 확인해야하는지 궁금합니다. 연결이 없으면 webview 컨트롤에 오류가 표시됩니다. 그 오류 메시지를 단락하려고하십니까? 검사가 성공하는 매우 작은 타이밍 창이있을 수 있지만 클릭이 처리되면 웹 사이트를 사용할 수 없게됩니다. 이 도움이

희망, 케빈

+0

케빈, 덕분에 나는 거기에 내 논리를 추가로 살펴 보겠습니다. 이유는 - 사용자가 웹 앱 URL과 함께 '페이지를 사용할 수 없음'페이지를 보지 못하도록하고 싶습니다. – bMon

+0

완벽. 매력처럼 작동합니다. – bMon