相关疑难解决方法(0)

使用webview打开新的android活动会显示空白(白色)屏幕而不是html内容

我已经研究了2天,我在互联网上的任何地方都没有发现类似的问题!

在主要活动中,我正在尝试打开一个包含webview的新活动,该活动将在android_asset文件夹中显示一个html页面(about.html).

我能够在正确显示webview的情况下启动新活动(test.java),但网页内容却没有显示出来.甚至显示webview的垂直滚动条(因为页面内容相对较长),我可以上下滚动页面但没有内容!

package com.example.test;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.TextView;

public class test extends Activity {
private TextView apppagetitle;
private WebView browser_rn;

@Override
public void onCreate(Bundle saveInstanceState) {
    super.onCreate(saveInstanceState);

    setContentView(R.layout.test);

    browser_rn=(WebView)findViewById(R.id.webkit);
    browser_rn.getSettings().setJavaScriptEnabled(true);
    browser_rn.getSettings().setPluginsEnabled(true);
    browser_rn.setScrollBarStyle(0);       

    final AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    apppagetitle=(TextView)findViewById(R.id.apppagetitle);


    browser_rn.setWebViewClient(new WebViewClient() {

        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return …
Run Code Online (Sandbox Code Playgroud)

android webview

25
推荐指数
2
解决办法
2万
查看次数

从本地资产加载时,jQuery Mobile无法在WebView中工作

我试图在我的Android应用程序中呈现使用jQueryMobile创建的页面,但我需要在处于脱机状态的webView中执行此操作.

为此,我开始复制我的页面的index.html并将所有必需的资产直接带到我的设备的内部存储.我然后file:///sdcard/index.html在我的设备的内部浏览器和Chrome应用程序中输入它,并且网站显示很好,有jQuery样式和所有.

然后我进入我的应用程序,在那里我有一个webView,这就是我实际需要渲染上述页面的地方.我使用加载页面loadDataWithBaseURL()(因为这是我最终需要做的),像这样:

loadDataWithBaseURL("file:///android_asset/web/", html, "text/html", "UTF-8", null);
Run Code Online (Sandbox Code Playgroud)

我将所有资产保存在资产文件夹的web目录中.

问题是,如果我加载没有资产引用的页面(只是正常调用loadUrl),它会加载但很明显没有样式或功能.当我把资产引用调用时,loadDataWithBaseURL它确实正确地读取了资产引用,但渲染仍然停留在jqueryMobile的旋转轮上,页面实际上从未加载.这就是我所看到的:

在此输入图像描述

总结一下:

  • 我使用jQuery Mobile创建了一个网站.它只是一个简单的html页面,带有jQuery的样式.

  • 我已准备好进行离线加载.我将所需资产打包到一个文件夹中,在index.html中我相对引用这些资产(例如href="web/styles.css").

  • 如果我在桌面浏览器中加载此页面而没有连接,则可以正常工作.

  • 如果我在移动浏览器(Chrome或内置浏览器)中加载此页面
    ,则可以正常运行.

  • 如果我在webview中没有资源引用的情况下加载此页面, 它就可以工作(没有样式或图像等)

  • 如果我在我的webview中加载带有资产引用的页面,它就
    不起作用,它会被旋转的轮子困住.连通性不会影响问题.

  • 如果我删除引用jQM样式表的行,则页面加载时没有样式,但图像正确加载(因此对资产的引用正确的)

请注意,因为我在jQM中完全禁用了AJAX,所以旋转轮甚至不应该首先出现:

<script>
$.mobile.ajaxEnabled = false;
</script>
Run Code Online (Sandbox Code Playgroud)

奇怪的是,AFAIK内部的Android网页浏览器和网页浏览共享同一个渲染器,所以我对这里发生的事情感到很遗憾,因为它可以正常浏览器,我可以调试正在发生的事情.

作为参考,这是我定义webView的方式:

    mWebView = (WebView) findViewById(R.id.webView);
    WebSettings s = mWebView.getSettings();
    s.setJavaScriptEnabled(true);
Run Code Online (Sandbox Code Playgroud)

我有一些其他设置,但为了简化问题我删除了它们,问题仍然存在.

有什么建议?

PD.根据要求,发布index.html文件.这是最简单的例子,只是一个空索引.问题依然存在:

<!doctype html>
<html lang=es>
<head>
<meta charset="utf-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
<meta name="viewport" …
Run Code Online (Sandbox Code Playgroud)

android webview jquery-mobile

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

android ×2

webview ×2

jquery-mobile ×1