【问题标题】:Android setWebChromeClient not workingAndroid setWebChromeClient 不起作用
【发布时间】:2014-06-03 21:04:06
【问题描述】:

我正在尝试在 webview 中加载网站,但是当我打开应用程序时,它不会加载任何内容,而是在默认浏览器中打开链接。我怎样才能让它加载到我的 webview 中?该代码在eclipse中没有错误,但它没有做它应该做的事情。我做错了什么?

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://www.website.com/");


    }
}

【问题讨论】:

    标签: android google-chrome android-webview


    【解决方案1】:

    尝试设置自定义WebViewClient:

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

    WebChromeClient 让你处理JavaScript 函数。

    WebViewClient 让您处理加载页面 (shouldOverrideUrlLoading()) 和完整加载页面 (onPageFinished())。

    【讨论】:

    • shouldOverrideUrlLoading 被调用用于非 https 方案的子帧。如果您转到jsbin.com/gupug/1/quiet 之类的页面,您的代码最终会调用 view.loadUrl('tel:1234') 并且最终会显示错误页面,因为 webview 不知道如何加载 tel: URL .你应该从shouldOverrideUrlLoading返回false
    猜你喜欢
    • 2017-09-29
    • 2018-10-05
    • 2010-10-28
    • 2016-05-26
    • 2013-06-03
    • 2016-06-19
    • 2015-04-21
    • 2018-10-15
    • 2011-04-03
    相关资源
    最近更新 更多