-1

用 sl4a 尝试一些基本的 html 脚本,而我的 python 应用程序似乎无法调用 HTML ......试图将数据从HTML 中的小表单发送到 python 端

这是HTML

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>HTML form</title>
<link rel="stylesheet" href="style.css"/> 
</head>

<body>
<div id="body">
<h1>My Settings</h1>
<script type="text/javascript">
var droid = new Android();
function post_data(){
var values = [
['airplane', document.getElementById('airplane_mode').value],
['wifi', document.getElementById('wifi_on').value],
['brightness', document.getElementById('brightness').value],
['volume', document.getElementById('volume').value],
];
var q = '?';
for (i=0;i<values.length;i++){
    var k = values[i][0];
    var v = values[i][1];
    if (q != '?'){
    q = q + '&';
    }
    q = q + k + '=' + v;
    }
    droid.postEvent('save', q);
    }
</script>
<form onsubmit="post_data();">
<div class="container">
<div>
<label for="airplane_mode">Airplane Mode</label>
<input id="airplane_mode" name="radio" type="radio" />
</div>
<div>
<label for="wifi_on">WiFi On</label>
<input id="wifi_on" name="radio" type="radio" />
</div>
<div>
<label for="off">Both off</label>
<input id="off" name="radio" type="radio" />
</div>
</div>
<div class="container">
<div>
<label for="brightness">Brightness Level</label>
<input size="5" id="brightness" type="text" />
</div>
<div>
<label for="volume">Media Volume</label>
<input size="5" id="volume" type="text" />
</div>
</div>
<div class="container buttons">
<div>
<input size="5" id="save" name="save" type="submit" value="Save Settings" />
<input size="5" id="cancel" name="cancel" type="button" value="Cancel" />
</div>
</div>
</form>
</div>


</body>
</html>

这是 python 端,它使用从 HTML 中的 js 传递的值来更改一些电话选项

import android
import urlparse

droid = android.Android()
droid.webViewShow('file:///tablet/sl4a/scripts/html/options.html')
while True:
    result = droid.eventWaitFor('save').result
    data = urlparse.parse_qs(result['data'][1:])
    droid.toggleAirplaneMode('airplane' in data)
    print 'airplane' in data
    droid.toggleWifiState('wifi' in data)
    print 'wifi' in data
    droid.setScreenBrightness('screen' in data and 255 or 0)

事情是,一旦我执行 python 代码,它根本不会调用 webViewShow 并且只是关闭说明响应不可解析,因为它的值是无,而不是元组,那么我到底哪里出错了?

更新:为 url 尝试了不同的格式,所以没有奏效。webview 本身没有被调用

更新 2:好的... webview 正在打开,但我得到的只是一个空白页面,迫使我使用任务管理器执行硬杀,因为 sl4a 冻结在那里,就好像它正在尝试渲染 html

更新 3:让 webViewShow 引用一个不存在的地址并且屏幕问题不断发生。有任何想法吗?

Py4A 是最新的,SL4A 版本是 R6。在安卓 4.1.2 上运行

4

1 回答 1

-1
droid.webViewShow('file:///tablet/sl4a/scripts/html/options.html',None)
于 2013-09-12T16:24:12.760 回答