SL4A-Python: webViewShow显示简单HTML页面,脚本终止后不消失
我没有找到相关的答案,SL4A的版本是R6,Py4A是R5。事情很简单,应用程序调用了webViewShow来显示一个HTML页面,页面显示得很好,脚本也结束了,但页面就是不想消失。无法进入菜单,返回键也不管用,只有主页键能用,这样的话如果脚本是通过adb运行的,就需要在应用管理器里强制关闭sl4a;如果是在设备上的解释器里运行的,就得结束这个脚本。我还试过访问http://www.google.com,结果也是一样。webViewShow返回的是NoneType,但页面还是显示出来了。
示例:
import android
droid = android.Android()
droid.webViewShow('/sdcard/sl4a/scripts/main_view.html'
HTML:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" id="viewport"
content="width=device-width, target-densitydpi=device-dpi,
initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"
/>
</head>
<body >
<h1 style="text-align:center">Supervisor</h1>
</body>
</html>
提前谢谢大家!
3 个回答
0
我同意佩德罗的看法。这是从sl4a中退出webview的唯一方法,这一点得到了项目最后一任维护者达蒙·科尔赫的确认,在项目最终被分叉之前。
一旦你部署了一个webview,除了通过它内部的js代码,别无他法可以关闭它。
<script> var droid = new Android(); </script>
然后把这个代码附加到一个元素上。
onclick="droid.eventPost('kill', ''); droid.dismiss();
对我来说,我通过eventWait使用一个eventPost回调到我的主脚本。
while True:
event = droid.eventWait().result
if event['name'] == 'kill':
pipe.send('kill')
pipe.close()
我发现这样做效果非常好,因为我使用bottle来将我的webview作为两个独立的进程提供服务,并且需要一种方法在webview退出后立即关闭我的脚本。
0
我也遇到了这个问题,找不到合适的解决办法。在我的情况下,我怀疑这个脚本在WebView关闭之前无法完全“结束”...这就像是个死循环。为了绕过这个问题,我在手机的菜单按钮上添加了一个明确的“退出”选项,然后再打开WebView:
# give us a way to escape from the webview
droid.addOptionsMenuItem('Quit','menu-quit',None,"ic_lock_power_off")
这并不是最理想的办法(用户还是得去找这个退出选项,或者事先知道它的存在),但在我的手机上(SL4A r6,Android 2.3.7)似乎能同时关闭脚本和WebView。
0
也许这能帮到你:
<script>
var droid = new Android();
</script>
<input type="button" value="Exit" onclick="droid.dismiss();" />