QPython3, Android 6.0;我想 JS 不能实例 var droid = 新的安卓((;有什么解决问题的提示吗?
Python 代码(两种情况都一样!
import android
droid=android.Android()
droid.webViewShow('file:///storage/emulated/0/qpython/scripts3/test10_le_HTMLGUI_01.html')
while True:
result=droid.eventWaitFor('sag').result
droid.ttsSpeak(result['data'])
HTML 代码: test10_le_HTMLGUI_01.html (案例 1(:
<html>
<head>
<title>Text To Speech</title>
<script>
var n = prompt("Hello JavaScript","");
var droid = new Android();
var speak = function() {
var n = prompt("Hello JavaScript","");
droid.eventPost("sag", document.getElementById("sag").value, 1);
}
</script>
</head>
<body>
<form onsubmit="speak(); return false;">
<label for="sag">What is your message?</label>
<input type="text" id="sag" />
<input type="submit" value="Speak" />
</form>
</body>
</html>
HTML 代码(案例 2(:
<html>
<head>
<title>Text To Speech</title>
<script>
var droid = new Android();
var n = prompt("Hello JavaScript","");
var speak = function() {
var n = prompt("Hello JavaScript","");
droid.eventPost("sag", document.getElementById("sag").value, 1);
}
</script>
</head>
<body>
<form onsubmit="speak(); return false;">
<label for="sag">What is your message?</label>
<input type="text" id="sag" />
<input type="submit" value="Speak" />
</form>
</body>
</html>
在情况 1 中,提示符("Hello JavaScript","(被执行,但在情况 2 中则不执行!
QPython3 (Android 6( SL4A eventPost(( 和 eventWaitFor(( 在以下示例上工作正常(有关添加信息,请参阅 http://www.mithril.com.au/android/doc/(:
import android, time
droid=android.Android()
t = 'Geschafft!'
print('debug 1')
droid.eventPost('Event1', t, 1)
print('debug 2')
print('debug 3')
result=droid.eventWaitFor('Event1').result
droid.ttsSpeak(result['data'])
print('debug 4')
print(result['data'])
证明:如果你注释掉 droid.eventPost('Event1', t, 1( 行,那么 eventWaitFor(( 将永远阻塞!
也许我们在QPython3 webViewShow中遇到了类似的问题 - 脚本无法接收数据并在 https://stackoverflow.com/questions/36478310/qpython-webview-javascript-android-object
问候古斯塔夫 (2017-03-21(
使用 bottle(( 而不是 JavaScript。它已经集成到QPython3中,并为几乎相同的任务提供了解决方案。查找 bottle(( 的教程,网址为https://bottlepy.org/docs/dev/bottle-docs.pdf
问候Gustav
我遇到了同样的问题。据我所知,至少在最新版本中,您需要在调用JavascriptAddInterface来使用webview时添加Android界面,而从SL4A源代码来看似乎没有。太糟糕了。。。