【问题标题】:Android webview - webpage renders in a very broken wayAndroid webview - 网页以非常破碎的方式呈现
【发布时间】:2013-07-06 12:02:30
【问题描述】:

我正在尝试在 Android WebView 中加载这个流行的播客:

http://www.stitcher.com/podcast/entrepreneuronfirecom/entrepreneur-on-fire-tim-ferriss-other-incredible-entrepreneurs

这就是我的渲染方式:

public class PodcastsActivity extends BaseActivity  
{    
    @Override
    public void onCreate(Bundle savedInstanceState) 
    {
        super.onCreate(savedInstanceState);

        WebView webview = new WebView(this);
        webview.getSettings().setAppCacheEnabled(false);
        webview.getSettings().setJavaScriptEnabled(true);
        webview.setInitialScale(100);
        webview.setWebViewClient(new WebViewClient());

        setContentView(webview);
        webview.loadUrl("http://www.stitcher.com/podcast/entrepreneuronfirecom/entrepreneur-on-fire-tim-ferriss-other-incredible-entrepreneurs");           

在我的清单中,我有这样定义的活动:

    <activity
        android:name="PodcastsActivity"
        android:label="Podcasts" 
        android:hardwareAccelerated="true"/> 

但它呈现如下:

是否需要设置额外的设置?还是我错过了什么?

谢谢!

【问题讨论】:

    标签: java android android-webview


    【解决方案1】:

    我希望你已经看过其他答案。您可以尝试的一些方法是:

    1) 来自webview not loading correctly in application 的问题,您可以尝试在加载 URL 之前启用 java 脚本:

    webview.setInitialScale(1);
    webview.getSettings().setAppCacheEnabled(false);
    webview.getSettings().setJavaScriptEnabled(true);
    

    2) 根据Android webview not rendering html content correctly 问题,如果您的目标高于 2.3.3,请尝试将其添加到清单文件中。

    android:hardwareAccelerated="true"
    

    更新

    3) 还要检查您在manifest 中是否具有以下权限作为&lt;manifest&gt; 标签的直接子级:

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

    Unable to load webpage using WebView in Android

    4) 您可以尝试shouldOverrideUrlLoading() 方法,如here 所述。

    更新 2

    正如您所说,它在您的浏览器上正确显示,如果在应用程序中单击某个链接,它会打开默认浏览器,使用上述方法还有另一种可能性。我不确定你是否想要这个,但这是可能的。如下:

    webview.setWebViewClient(new WebViewClient(){
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (url != null) {
                view.getContext().startActivity(
                    new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
                return true;
            } else {
                return false;
            }
        }
    });
    
    webview.loadUrl("http://www.stitcher.com/podcast/entrepreneuronfirecom/entrepreneur-on-fire-tim-ferriss-other-incredible-entrepreneurs");
    

    来源:WebView link click open default browser

    希望这会有所帮助。

    【讨论】:

    • 谢谢你 - 现在试试 :) 我之前正在修改启用 JS。
    • 哦。很抱歉,它没有用。您要在哪部手机上试用?
    • 现在我正在模拟器上尝试。
    • 我的目标是 sdk 版本 15 并添加了 hardwareAccelerated 行
    • 刚刚在物理设备上测试过。同样的问题。这是一部使用了 2 年的手机。但操作系统是新的:4.0.4
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-09
    • 1970-01-01
    相关资源
    最近更新 更多