我想知道一个简单问题的答案,但没有找到一个好的答案 (我在谷歌上搜索了几个小时:)
我正在用python玩sl4a,我可以将事件从js发送到python脚本,但是js没有捕捉到我在下面从python到js的代码中放入的eventPost。在
有人知道这是怎么做到的,或者有没有其他没有registerCallback的方法?在
HTML代码:
<html>
<head>
<script>
var droid = new Android();
function doit(){
droid.makeToast("Text send :=>"+document.getElementById("msg").value);
droid.eventPost("doit",document.getElementById("msg").value);
}
function alert_me(data){
droid.makeToast("All done!");
document.getElementById("msg").value = '';
}
droid.registerCallback("done",alert_me);
</script>
</head>
<body>
<input type="text" name="boton" id="msg" value="" />
<input type="button" name="boton" value="Go!" onclick="javascript:doit()" />
</body>
</html>
PYTHON代码:
^{pr2}$
不幸的是,我个人从来没能做到这一点,同时使用}。但是,如果你仍然想让这个工作起来,我强烈建议你去下载sl4a_r5x,这是一个非官方但更新的SL4A版本,它支持使用基于原生Android应用程序使用的相同xml代码的FullScreenUi。有了这个,你就可以做你想做的事了,你可以在页面上找到例子。
registerCallback()
和{希望这对你有帮助,你仍然对SL4A感兴趣!在
这很容易操作,但并不明显,也没有很好的文档记录。在
首先,您需要一个钩子到webview中的
Android
对象。然后可以使用它注册一个或多个回调。对于一个简单的例子,我们将只做一个弹出一个带有Python消息的警报。在在本例中,
echo
是您希望此回调处理的事件类型的名称。所以这将处理“回声事件”。事件名称是任意字符串,只要有意义就可以调用它们。在在启动webview的Python脚本中,现在可以随时向注册的处理程序发布事件。在
^{pr2}$这里的第二个参数是要传递给JavaScript回调的消息。在
请注意,尽管您将消息作为字符串返回,但它作为对象到达JavaScript函数。上面我们称之为
msg
的对象有一个名为data
的属性,其中包含从Python端传递的字符串。在相关问题 更多 >
编程相关推荐