我已经研究了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应用程序中呈现使用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)