2014-08-29 7 views
-1

Android 앱에서 웹 페이지를 열 때 WebView를 사용하고 있습니다. 안드로이드 매니페스트 파일에브라우저를 사용하여 웹 페이지를 엽니 다.

<?xml version="1.0" encoding="utf-8"?> 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
android:id="@+id/webview" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
/> 

추가 권한을 : 나는대로 레이아웃을 설명

<uses-permission android:name="android.permission.INTERNET" /> 

그리고 나의 활동 클래스에서 웹보기를 사용 :

WebView theWebPage = new WebView(this); 
setContentView(theWebPage); 
theWebPage.loadUrl("http://www.google.com"); 

그 일을하는 데, 나는 몇 안드로이드 폰에서이 앱을 돌렸다. 개봉 후 앱에서 웹 페이지를 여는 데 사용할 Chrome, Mozilla 또는 기타 브라우저가 설치된 브라우저 (예 : " http://www.google.com")를 묻습니다.

앱이 웹 페이지 자체를 열길 원합니다. 도움?

+0

여기 봐 : http://stackoverflow.com/questions/7746409/android-webview-launches-browser- when-calling-loadurl –

답변

1

귀하의 XML은 correct.You 사용자 정의로 setWebViewClient 필요하다) 사용자 정의 WebViewClient를 설정하고 shouldOverrideUrlLoading

http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String의를 오버라이드 (override) 할 필요가있다. 이것은 간단한 브라우저를 만들기위한 코드입니다. 어쩌면 이것이 당신의 의구심을 분명히하는 데 도움이 될 것입니다.

Broweser.java

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.simplebrowser); 

    ourBrow = (WebView)findViewById(R.id.wvBrowser); 
    ourBrow.getSettings().setJavaScriptEnabled(true); 
    ourBrow.getSettings().setLoadWithOverviewMode(true); 
    ourBrow.getSettings().setUseWideViewPort(true); 
    ourBrow.setWebViewClient(new ourViewClient()); 
    ourBrow.getSettings().setBuiltInZoomControls(true); 
    try{ 
    ourBrow.loadUrl("http://www.google.com"); 
    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
    Button go = (Button)findViewById(R.id.bGo); 
    Button back = (Button)findViewById(R.id.bBack); 
    Button refresh = (Button)findViewById(R.id.bRefresh); 
    Button forward = (Button)findViewById(R.id.bForward); 
    Button clearHistory = (Button)findViewById(R.id.bHistory); 
    url = (EditText)findViewById(R.id.etURL); 

    go.setOnClickListener(this); 
    back.setOnClickListener(this); 
    refresh.setOnClickListener(this); 
    forward.setOnClickListener(this); 
    clearHistory.setOnClickListener(this); 

} 

@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 
    switch(v.getId()){ 
    case R.id.bGo: 
     String theWebSite = url.getText().toString(); 
     ourBrow.loadUrl(theWebSite); 
     //hiding keyboard after the input in EditText 
     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
     imm.hideSoftInputFromWindow(url.getWindowToken(),0); 
     break; 
    case R.id.bBack: 
     if(ourBrow.canGoBack()) 
      ourBrow.goBack(); 
     break; 
    case R.id.bRefresh: 
     ourBrow.reload(); 
     break; 
    case R.id.bForward: 
     if(ourBrow.canGoForward()) 
      ourBrow.goForward(); 
     break; 
    case R.id.bHistory: 
     ourBrow.clearHistory(); 
     break; 

    } 
} 

ourViewClient.java

public class ourViewClient extends WebViewClient { 
@Override 
public boolean shouldOverrideUrlLoading(WebView v,String url){ 
    v.loadUrl(url); 
    return true; 
} 
관련 문제