Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android SL4A:如何在HTML/javascript应用程序中链接到相关脚本?_Javascript_Python_Html_Sl4a - Fatal编程技术网

Android SL4A:如何在HTML/javascript应用程序中链接到相关脚本?

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

好的,所以我尝试了三种方法来将外部javascript和CSS文件添加到我的SL4A应用程序中。我在3UK的中兴赛车上使用2.3姜饼(cyanogenmod和谷歌应用程序),并使用SL4A r4和android python 2.6.2(如果合适)

首先,我假设相关链接会起作用:


情况并非如此-未加载相关脚本和样式

接下来,我尝试使用事件从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路径的方式的假设-我更喜欢使用更动态和正确的python
sys.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共享时)。上述方法是一种你不必假设的方法;这是一种在应用程序加载时动态计算绝对路径的方法。