【问题标题】:Android webview opens page in default browser instead of my webview [duplicate]Android webview在默认浏览器中打开页面而不是我的webview [重复]
【发布时间】:2014-07-24 23:27:54
【问题描述】:

我正在尝试两天来找到一个可以使用我所拥有的代码。我正在关注本教程:http://techvalleyprojects.blogspot.ro/2011_08_01_archive.html

我有以下问题:我想在我的应用程序中打开的网页没有加载到我的 webview 中,而是在默认浏览器中打开。如何修改我的代码,以便在 webview 中打开所有链接。我需要一个简单的解决方案,因为我对 Android 很陌生..

谢谢。

package com.example.name;

import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebChromeClient;
import android.webkit.WebView;

public class MainActivity extends Activity {
WebView browser;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // find the WebView by name in the main.xml of step 2
        browser=(WebView)findViewById(R.id.wvwMain);

        // Enable javascript
        browser.getSettings().setJavaScriptEnabled(true);  

        // Set WebView client
        browser.setWebChromeClient(new WebChromeClient());

        // Load the webpage
        browser.loadUrl("http://news.google.com/");

    }
}

【问题讨论】:

    标签: android browser webview


    【解决方案1】:

    你需要像这样实现setWebViewClient(....)

    webView.setWebViewClient(new WebViewClient() {
    
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                    }
            });
    

    更新:

    让你的活动像这样

    public class MainActivity extends Activity {
    WebView browser;
    
    @Override
     protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    
        // find the WebView by name in the main.xml of step 2
        browser=(WebView)findViewById(R.id.wvwMain);
    
        // Enable javascript
        browser.getSettings().setJavaScriptEnabled(true);  
    
        // Set WebView client
        browser.setWebChromeClient(new WebChromeClient());
    
        browser.setWebViewClient(new WebViewClient() {
    
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);
                    return true;
                    }
            });
         // Load the webpage
        browser.loadUrl("http://news.google.com/");
       }
    }
    

    【讨论】:

    • 谢谢,但是我应该把 URL 放在哪里呢?我是否将 (url) 替换为 ("news.google.com/") ?
    • @AdrianM。等等,我会更新我的答案。
    • 谢谢,但我收到 3 个错误: -- 描述资源路径位置类型 new WebViewClient(){} 类型的方法 shouldOverrideUrlLoading(WebView, String) 必须覆盖或实现超类型方法 MainActivity.java /name/src/com/example/name 第 31 行 Java 问题 - 描述资源路径位置类型 webView 无法解析 MainActivity.java /name/src/com/example/name 第 28 行 Java 问题 - 描述资源路径位置类型 WebViewClient无法解析为类型 MainActivity.java /name/src/com/example/name 第 28 行 Java 问题
    • @AdrianM。那是什么?发布它。
    • 这就是修复。非常感谢你:)
    【解决方案2】:

    添加此setContentView(browser); 而不是setContentView(R.layout.activity_main);,但将其添加到方法的末尾。

    编辑:

    另外,添加这个:

       browser.setWebViewClient(new WebViewClient() {
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
    
                }
            });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 2011-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多