我正在写sl4a android应用程序利用webviews。我试图从webview调用我的python脚本中的事件处理函数,该函数启动一个意图,从图像库中选择图像并将图像路径发送回webview,以便它可以通过基础附加到弹出屏幕5显示模块以及隐藏的输入标签提交。SL4A +内容+ Jquery + Webview
我遇到的问题是双重的。我正在寻找循环registerCallback函数的正确方法,直到用户点击一张照片并从python返回值,即用户决定选择哪张图片时无限期。到目前为止,如果没有睡眠或setTimeout循环,它会在事件发生之前寻找事件。而且,由匿名函数分配的url变量在通过if/else语句时未被确认。我知道这应该是一个范围问题,但我不确定我做错了什么。
jQuery代码
var picInc = 0;
var url = undefined;
$(function(){
$('#picSelect').click(function(){
picInc += 1;
droid._pickPic();
while(url == undefined){
sleep(3000); // maybe setTimeout(function{ null function}, 1000);
droid.registerCallback('picSelect', function(msg){
url = msg.data;
});
}
if(url == 'None'){
url = undefined;
}else{
var strip = url.split('\\').pop().split('/').pop();
$('.PICADD').append(' /* add img tag with image path */ ');
url = undefined;
}
});
});
Python代码
while True:
event = droid.eventWait().result
name = event['name']
data = event['data']
if event['data'] == 'PIC':
activity = droid.startActivityForResult('android.intent.action.GET_CONTENT', None, 'image/*') #, {'android.intent.action.extra.ALLOW_MULTIPLE': True}
if activity.result == None:
droid.eventPost('picSelect', 'None')
else:
result = activity.result['data']
parsedUriPath = droid.queryContent(result)
cleanParsed = parsedUriPath.result[0]['_data']
droid.eventPost('picSelect', '{}'.format(str(cleanParsed)))
这似乎是它的工作,虽然我找到了一个解决方案而回,忘了将它张贴。谢谢。我也想感谢你维护SL4A存储库并将python构建转换为PIE,以便我们可以在android-python27上使用棒棒糖和超越。如果您正在寻找贡献者,请告诉我。 –