【问题标题】:WebView using browser to open webpage [duplicate]WebView使用浏览器打开网页[重复]
【发布时间】:2014-10-23 14:42:45
【问题描述】:

我正在使用 WebView 在 Android 应用中打开网页。 我将布局描述为:

<?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"
/>

在 Android Manifest 文件中添加权限为:

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

并在我的活动类中使用 WebView 作为:

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

完成后,我在几部 Android 手机上运行了该应用。打开后,应用程序会询问使用哪个应用程序(Chrome、Mozilla 或手机上安装的任何其他浏览器)来打开网页,即“http://www.google.com”。

我希望应用程序在其内部打开网页。帮忙?

【问题讨论】:

标签: android webview


【解决方案1】:

您需要设置自定义WebViewClient 并覆盖shouldOverrideUrlLoading

http://developer.android.com/reference/android/webkit/WebViewClient.html#shouldOverrideUrlLoading(android.webkit.WebView, java.lang.String)

【讨论】:

    【解决方案2】:

    你的xml是正确的。你需要setWebViewClient作为你的自定义。 这是制作简单浏览器的代码。也许这会帮助你澄清你的疑虑。

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

    【讨论】:

      猜你喜欢
      • 2015-06-03
      • 2015-06-19
      • 1970-01-01
      • 1970-01-01
      • 2014-07-24
      • 2012-10-30
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      相关资源
      最近更新 更多