#javascript #android #flash
#javascript #Android #flash
Вопрос:
При попытке разработать какое-либо приложение для Android я столкнулся со следующей проблемой: я загружаю swf-файл в WebView
, который выполняет вызовы js. Я хочу перехватить эти вызовы js, поэтому я использую WebViews.addJavascriptInterface()
для этого. Все работало просто отлично, когда я загружал swf-файл с удаленного сервера, но когда я загружаю тот же swf-файл из файловой системы Android, методы javascript, похоже, не запускаются (по крайней мере, я их не вижу).
Есть идеи, что может вызвать эту проблему?
Я не говорю на js, но, насколько я знаю, в обоих случаях js работает в зависимости от размера клиента.
Спасибо за любой совет.
Ответ №1:
Я думаю, это из-за Flash sandbox. Когда вы запускаете файл локально, вы не можете запустить код Javascript, поскольку он выполняет действия за пределами SWF. Однако его запуск с удаленного сервера имеет привилегии изолированной среды домена. Проверьте эту ссылку для получения более подробной информации:http://help.adobe.com/en_US/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html
Комментарии:
1. Спасибо за ответ! Есть ли какие-либо способы изменить привилегии изолированной среды для файла, который я загружаю в локальную систему?
2. Нет. Они принудительно выполняются проигрывателем. Я полагаю, вы можете использовать изолированную среду local-with-networking для вызова функций JS. Однако вам придется отказаться от доступа к локальной файловой системе.
3. Спасибо! Очень жаль. Есть предложения по обеспечению связи между Android и локально открытым SWF-файлом? 🙂
4. У вас не может быть доступа к сети и файловой системе в SWF-файле. Если у вас есть сетевое разрешение в SWF-файле, и это локальный SWF-файл, то вы можете подключиться к браузеру Android.
5. Я думаю, мне не нужно разрешение сети, swf-файл загружается из хранилища устройства Android в браузер приложения (WebView), и мне просто нужно каким-то образом связаться с системой Android (мое приложение).