Я пишу приложение для Android с Android, используя веб-просмотры. Я пытаюсь выполнить вызов из веб-браузера в обработчик события в моем сценарии python, который запускает намерение выбрать изображение из галереи изображений и отправить путь изображения к веб-просмотру, чтобы он мог присоединяться к всплывающему экрану через основание 5, а также скрытый тег ввода для отправки.SL4A + Intents + 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, работая на леденец и дальше. Если вы хотите, чтобы авторы давали мне знать. –