我正在寫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上使用棒棒糖和超越。如果您正在尋找貢獻者,請告訴我。 –