Android SL4A:如何在HTML/javascript应用程序中链接到相关脚本?
好的,所以我尝试了三种方法来将外部javascript和CSS文件添加到我的SL4A应用程序中。我在3UK的中兴赛车上使用2.3姜饼(cyanogenmod和谷歌应用程序),并使用SL4A r4和android python 2.6.2(如果合适) 首先,我假设相关链接会起作用:Android SL4A:如何在HTML/javascript应用程序中链接到相关脚本?,javascript,python,html,sl4a,Javascript,Python,Html,Sl4a,好的,所以我尝试了三种方法来将外部javascript和CSS文件添加到我的SL4A应用程序中。我在3UK的中兴赛车上使用2.3姜饼(cyanogenmod和谷歌应用程序),并使用SL4A r4和android python 2.6.2(如果合适) 首先,我假设相关链接会起作用: 情况并非如此-未加载相关脚本和样式 接下来,我尝试使用事件从python加载脚本传入绝对路径: #script.py-启动以加载窗口。 导入android、sys、time droid=android.androi
情况并非如此-未加载相关脚本和样式
接下来,我尝试使用事件从python加载脚本传入绝对路径:
#script.py-启动以加载窗口。
导入android、sys、time
droid=android.android()
path=“file://”+sys.path[0]
droid.webViewShow(路径+“/GUI.html”)
droid.eventPost('globalAppPath',path+“/”)
#休眠一段时间以允许webview加载DOM并读取事件。
时间。睡眠(10)
以及GUI.html
中body标记末尾的内联脚本中的以下代码:
//(内联jquery能够轻松地附加到调试div。)
var droid=newandroid();
var event=droid.eventWait('globalAppPath');
$('#加载').append(
“+JSON.stringify(事件));
但是,由于事件没有“result”属性,只有“error”属性(某些Java异常:
org.json.JSONException:java.lang.String类型的0处的值globalAppPath无法转换为int
python中的路径字符串不可强制转换为未绑定的int
?!)
最后,我尝试使用document.URL
,如下所示:
//(内联jquery能够轻松地附加到调试div。)
$(“#加载”).append(“
”+document.URL);
但是,这只是返回路径:
file:///mnt/sdcard/sl4a/scripts/
事实上,正确的路径应该是
file:///mnt/sdcard/sl4a/scripts/run-app/GUI.html
有可能是这个不正确的路径首先导致了失败——如果相关脚本正在父目录中查找可以解释事情的话。然而,当以APK形式分发到不同制造商的android实现中时,这显然是不可靠的-我不能依赖任何关于SL4A初始化web视图URL路径的方式的假设-我更喜欢使用更动态和正确的pythonsys.path[0]
,如果我能以某种方式将结果传达给webview就好了
我会认为每一次失败都是一个错误,但这三个都是令人沮丧的!我更愿意使用这个框架,而不是回到Tianium,因为它让我在遇到困难时可以直接使用python,而您不希望javascript UI冻结,但是,如果我不能将代码组织成不同的文件,我将很难利用SL4A手机编辑功能,在每个代码文件中使用内嵌jquery
有没有一种方法能真正起作用?有人用SL4A在Android上安装并运行了HTML5/javascript应用程序吗?这个问题的答案就是RTFM-
droid.eventWait()
接受单个可选整数参数—等待任何事件的秒数
droid.eventWaitFor()
另一方面,允许在(强制)第一个参数中使用字符串筛选事件类型
所有的细节
我的错。自从发布这篇文章以来,我已经尝试在Tianium中实现了一些东西,但由于它不支持语音测试,因此它完全不适合我正在尝试构建的应用程序。在此方面的任何帮助都将不胜感激。此外,我已经尝试过将其打包为依赖SL4A的APK,但这三种方式中的任何一种都不起作用。我现在把我的整个应用程序都写成一个HTML文件——哦,真是头疼——所以任何解决这个问题的方法都将不胜感激。这也意味着我无法在GUI中使用任何图像-仅CSS元素和颜色:/我在链接HTML/javascript中的相关脚本时遇到了同样的问题。知道怎么做吗?有可能吗?我正在尝试实现一个完整的HTML+SL4A应用程序。问题中显示的方法(包括答案中的更正)应该可以工作-从python中的
sys.path[0]
读取路径,加载HTML webview,然后触发一个如图所示的事件,将显示的javascript添加到HTML文件中。然后,您将需要类似Jquery的东西来访问DOM。似乎您可以从绝对路径直接引用静态内容,假设您的所有文件始终位于:file:///data/data/com.package.path/files/ (将你的应用程序作为apk共享时)。上述方法是一种你不必假设的方法;这是一种在应用程序加载时动态计算绝对路径的方法。