安卓WebView显示空白页

11

尝试创建一个WebView但只显示空白/白色页面。我遵循了几个示例,它们都说使用这段代码可以工作...

这是我的代码:

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

public class PostenWebView extends Activity {

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.web_view);
        WebView webview = (WebView)findViewById(R.id.webview);
        webview.loadUrl("http://www.google.com");
    }
}

这是web_view.xml的代码:

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

1
我也遇到了这个问题。我的代码如下: mWebView =(WebView)findViewById(R.id.web_view); mWebView.getSettings()。setJavaScriptEnabled(true); mWebView.getSettings()。setSavePassword(false); url =“http://www.google.com”; mWebView.loadUrl(url); 在屏幕方向发生改变之前,无法显示网页。但是,在方向改变后,页面可以正常显示。 - Richard
这里也有同样的问题。在屏幕方向改变或点击webview之前,网页不会显示出来。然后页面正常显示。有什么解决方法吗? - user4500
8个回答

16
您需要启用Javascript(.getSettings().setJavaScriptEnabled(true)),或选择不依赖Javascript的网页。

我正在尝试使用https://dev59.com/nnA75IYBdhLWcg3wubun#3134609读取Gmail帐户的标题,但是我得到的最终htmlContent无法在Web视图中加载...显示空白屏幕,如果我在浏览器上运行相同的HTML数据文件,它会显示让我选择我的邮件帐户以允许访问...为什么模拟器显示空白屏幕。 - CoDe
8
问题并不依赖于启用JavaScript。 - miniBill

4

您需要将权限添加到AndroidManifest.xml文件中。

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

4
已经做过了那个操作...在我的应用程序中,我使用互联网进行其他几个活动,并且它们都正常工作,所以这不可能是导致它显示空白页面的原因... :/ - Sara
我不知道除此之外的任何事情。确保任务栏上有3G图标。如果您在模拟器中执行此操作,请重新启动几次以使其出现。 - Pentium10

3

这对我很管用。

WebView webView = (WebView)findViewById(R.id.webView);

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

webView.loadUrl("http://www.google.com");

祝你好运!


2

使用webview.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);方法。


你救了我的一天!谢谢。 - Alican Temel
4
问题是什么,为什么这个解决方案可以解决它? - speedynomads
它所做的是改变渲染器渲染页面的方式,在这种情况下,使用软件渲染器(CPU),为什么会有帮助,我不清楚。 - Trevor Hart

0

你可能会被重定向..只需安装一个 WebViewClient 和你的 WebView 就可以了 :)


0

在我的情况下,加载google.com可以正常工作,但我的登录页面返回了一个完全白色的页面。添加以下内容解决了这个问题:

            WebSettings webSettings = webView.getSettings();
            webSettings.setJavaScriptEnabled(true);

            webSettings.setDatabaseEnabled(true);
            webSettings.setDomStorageEnabled(true);
            String databasePath = webView.getContext().getDir("databases", Context.MODE_PRIVATE).getPath();
            webSettings.setDatabasePath(databasePath);

-3

一个快速而不太好的解决方法可以是当你的安卓应用启动时,根据 web view 设置背景颜色。例如,我使用黑色背景,所以我可以这样设置:

myWebView.setBackgroundColor(Color.parseColor("#000000"));


2
这不是她问题的解决方案。 - miniBill

-4

如果您尝试加载HTTPS URL(例如Foursquare认证URL),请不要忘记调用

webview.clearSslPreferences();

在尝试加载之前


7
她并没有试图加载一个https网址。而盲目地使用clearSslPreferences会很危险。 - miniBill
2
如果我们正在加载一个https网站,这有用吗?它可能会引起什么问题? - speedynomads

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接