2012-12-19 5 views
0

내부 (로컬 네트워크) PHP 기반 사이트에 액세스하기 위해 작은 android webview 앱을 개발했습니다. 여기 Android webview 페이지를 사용할 수 없음

내 코드입니다 :이 사이트는 인증을 가지고

package com.CheckInventory; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.WindowManager; 
import android.webkit.WebChromeClient; 
import android.webkit.WebSettings; 
import android.webkit.WebStorage; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Toast; 

@SuppressWarnings("unused") 
public class CheckInventoryActivity extends Activity { 
    WebView webview; 
    String username; 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
     setContentView(R.layout.main); 
     webview = (WebView) findViewById(R.id.webview); 
     WebView webView = (WebView) findViewById(R.id.webview); 
     webView.setBackgroundColor(0); 
     webView.setBackgroundResource(R.drawable.myimage); 
     webView.addJavascriptInterface(new JavaScriptInterface(this), "Android"); 
     WebSettings webSettings = webview.getSettings(); 
     webSettings.setLoadWithOverviewMode(true); 

     webview.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); 

     webSettings.setJavaScriptEnabled(true); 
     webSettings.setJavaScriptCanOpenWindowsAutomatically(true); 
     webSettings.setDatabasePath("/data/data/"+this.getPackageName()+"/databases/"); 
     webSettings.setDomStorageEnabled(true); 
     webview.setWebChromeClient(new WebChromeClient()); 
     webview.loadUrl("http://192.168.0.124/android"); 
     webview.setWebViewClient(new HelloWebViewClient()); 

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


    @Override 
    public boolean onKeyDown (int keyCode, KeyEvent event) { 
     if((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()){ 
      //webview.goBack(); 
      return true; 
     } 
     return super.onKeyDown(keyCode, event); 
    } 

} 

,하지만 난 URL이 때이 작업을 수행 할 어쩌면 매개 변수를 전달하는 방법 응용 프로그램 및 사이트 (사이에 인증을 추가 하시겠습니까? 두 번째로 중요한 것은 onReceivedError를 어디에 두어 사용자가 건물이나 느슨한 연결에서 벗어나면 URL이나 페이지가 보이지 않도록 할 수 있습니다.

public void onReceivedError(WebView view, int errorCod,String description, String failingUrl) { 
     Toast.makeText(Webform.this, "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show(); 
    } 

나는 Detecting Webview Error and Show Message에서이 설명을보고하지만 난 그것을 구현 위치를 알 수 없습니다.

답변

1

당신은 당신이 당신의 웹보기에 새 WebViewClient를 설정해야 다음 WebViewClient를 확장하고이

class myWebClient extends WebViewClient { 

    @Override 
    public void onReceivedError(WebView view, int errorCode, 
      String description, String failingUrl) { 
     Toast.makeText(Webform.this, "Your Internet Connection May not be active Or " + description , Toast.LENGTH_LONG).show(); 
     super.onReceivedError(view, errorCode, description, failingUrl); 
    } 

} 

같은 방법 OnReceivedError

를 구현하는 클래스를 만들 필요가 사전에 감사합니다

web = (WebView) findViewById(R.id.webview); 
    web.setWebViewClient(new myWebClient()); 

은 당신이 당신의 HelloWebViewClient 클래스 onReceivedError를 추가하고 당신이 오류를 얻을 때 처리하는 것을 처리 할 수있는이

+0

UnQuaiz : 답변을 구현하는 방법을 모르겠지만 코드를 작성하는 것처럼 전체 코드를 표시 할 수 있습니까? – MrM

+0

[귀하의 코드를 기반으로 한 예제] (http://pastebin.com/e6SEJ1xa) – UnQuaiz

+0

시간 내 주셔서 진심으로 감사드립니다 !!! 불행히도, 그것은 작동하지 않았다. 아직 발견되지 않은 URL과 URL을 보여줍니다. 궁극적으로 인터넷을 사용할 수없는 경우 다시 시도 버튼을 표시하는 Google Play와 유사한 솔루션을 찾고 있습니다. 이후 구글에서 사람들에 의해 수행되고, 그것은 가능합니다, 나는 이것이 얼마나 어려운지 간단합니다. – MrM

0

을 도움이되기를 바랍니다.

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

     @Override 
     public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error){ 
      //Your code to do 
     Toast.makeText(getActivity(), "Your Internet Connection May not be active Or " + error , Toast.LENGTH_LONG).show(); 
     } 
    } 
관련 문제