我试图在我的Android应用程序中呈现一个使用jQueryMobile创建的页面,但我需要在webView中进行,处于脱机状态。
为此,我开始复制页面的index.html,并将所有所需的资产直接带到设备的内部存储中。然后,我在设备的内部浏览器和Chrome应用程序中输入文件:///sdcard/index.html
加载了它,网站显示得很好,有jQuery样式和所有样式。
然后我进入我的应用程序,在那里我有一个webView,这就是我实际上需要呈现前面提到的页面的地方。我使用LoadDataWithBaseurl()
加载页面(因为这是我最终需要做的),如下所示:
loadDataWithBaseURL("file:///android_asset/web/", html, "text/html", "UTF-8", null);
问题是,如果我在没有资产引用的情况下加载页面(只是通常调用loadurl
),它会加载,但显然没有样式或功能。当我调用LoadDataWithBaseURL
时,它确实正确地读取了资产引用,但是呈现被JQueryMobile的旋转轮卡住了,页面从未真正加载。这就是我所看到的:
所以总结一下:
>
我使用jQuery Mobile创建了一个网站。它只是一个简单的带有jQuery样式的html页面。
如果我用webview中的资产引用加载这个页面,它
就不起作用了,它被旋转轮卡住了。连通性不影响问题。
如果删除引用jQM样式表的行,则页面将在没有样式的情况下加载,但图像将正确加载(因此对资产的引用是正确的)
请注意,纺车根本就不应该出现,因为我在jQM中完全禁用了AJAX,使用:
<script>
$.mobile.ajaxEnabled = false;
</script>
mWebView = (WebView) findViewById(R.id.webView);
WebSettings s = mWebView.getSettings();
s.setJavaScriptEnabled(true);
有什么建议吗?
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" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="format-detection" content="telephone=no" />
<meta name="HandheldFriendly" content="true" />
<meta name="MobileOptimized" content="320" />
<head>
<title>
My title
</title>
<script>
$.mobile.ajaxEnabled = false;
</script>
<script src="script/jquery/jquery-1.9.1.min.js"></script>
<script src="script/jquery/jquery.mobile-1.3.2.min.js"></script>
<link href="css/jquery.mobile-1.3.2.min.css" rel="stylesheet" media="screen" type="text/css" />
</head>
<body>
</body>
</html>
自己解决了。从JellyBean开始,webView设置包括一个属性来禁止从文件资源加载,并且默认情况下是禁用的。
在pre-Jelly设备上运行我的应用程序很好,但我使用的两个开发设备都是基于4.3的。
如果有人感兴趣,我使用以下代码解决了它:
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN){
s.setAllowUniversalAccessFromFileURLs(true);
s.setAllowFileAccessFromFileURLs(true);
}
我正试图将本地url加载到webview,但我不想使用assets文件夹,因为它是只读的,而且我需要从Web服务更新文件。 Web服务调用运行良好,并将html文件保存到设备上的文件夹中,使用 这将在应用程序的存储空间中创建一个文件夹'app_live',并用HTML填充该文件夹。 现在,当我把它加载到我的Webview中时,应用程序显示“网站不可用”,尽管livefolder.isdir()返回
我有一个问题与WebView。我的应用程序在本地资产中内置了用html制作的帮助文件。我用WebView显示html文件。 null 我怀疑WebView没有处理本地文件的查看历史记录。我使用的是OS4.0.3。 有解决办法吗?
我在我的android应用程序中有一个webview,加载的html文件在服务器上,但是我需要从应用程序的资产文件夹地址一些文件。我想问一下如何处理这些文件。 谢谢
我有一个webview应用程序,可以从服务器加载资源(css、js、图像)。我希望它从应用程序的资产文件夹加载资源。我该怎么做?。 我尝试使用:
我是初学者。我已经使用“反应本机运行Android”命令在Ubuntu上运行了反应本机项目。我在模拟器上收到错误“无法从资产“index.android.bundle”加载脚本。确保您的包包装正确,或者您正在运行包服务器。”
在使用./gradlew assembledebug构建apk后,我得到了这个错误。如果我用./gradlew assembleRelease构建apk,我会在手机上安装应用程序时出现错误。当我用react-native run-android在虚拟设备中运行相同的应用程序时,应用程序运行良好,没有任何麻烦。有什么想法吗?