ОК, поэтому я попробовал три метода, чтобы иметь возможность добавлять внешние файлы JavaScript и CSS в мое приложение SL4A.Я использую 2.3 Gingerbread (cyanogenmod с приложениями Google) на ZTE Racer от 3UK и использую SL4A r4 с android python 2.6.2 (при необходимости).
Во-первых, я предполагал, что относительные ссылки будут работать:
<!-- GUI.html - loaded directly within SL4A UI. -->
<script type="text/javascript" src="jquery.js"></script>
Это не так - относительные скрипты и стили не загружаются.
Затем я попытался передать абсолютный путь из скрипта загрузки Python, используя событие:
# script.py - launched in order to load window.
import android, sys, time
droid = android.Android()
path = "file://" + sys.path[0]
droid.webViewShow(path + "/GUI.html")
droid.eventPost('globalAppPath', path + "/")
# sleep for a bit to allow webview to load the DOM and read the event.
time.sleep(10)
и следующий код в встроенном скрипте в конце тега body в GUI.html
:
// (inlined jquery to be able to append to a debug div easily.)
var droid = new Android();
var event = droid.eventWait('globalAppPath');
$('#loading').append("<br/>" + JSON.stringify(event));
однако, это происходит сбой, так как событие не имеет свойства 'result',только свойство 'error' (некоторые исключения Java:
org.json.JSONException: Value globalAppPath at 0 of type java.lang.String cannot be converted to int
строка пути из python не может быть преобразована в распакованный int
?!).
Наконец, я попытался использовать document.URL
согласно этому вопросу примерно так:
// (inlined jquery to be able to append to a debug div easily.)
$('#loading').append("<br/>" + document.URL);
Однако, это просто возвращает путь:
file:///mnt/sdcard/sl4a/scripts/
, хотя на самом делеправильный путь должен был быть
file:///mnt/sdcard/sl4a/scripts/run-app/GUI.html
Возможно, именно этот неправильный путьВо-первых, ch вызывает сбои - если относительные скрипты ищут в родительском каталоге, что бы объяснить вещи.Тем не менее, это явно ненадежно, когда распространяется в виде APK среди реализаций Android разных производителей - я не могу полагаться на какие-либо предположения о том, как SL4A инициализирует пути для URL-адресов веб-просмотра - я бы предпочел использовать более динамичный и правильный Pythonsys.path[0]
, если бы я только мог как-то сообщить результат веб-просмотру!
Я бы посчитал каждый из этих отказов по отдельности ошибкой, но все три вместе просто удручают!Я бы предпочел использовать этот фреймворк, а не возвращаться к Titanium, так как он дает мне возможность перейти на python, когда дела идут плохо, и вы не хотите, чтобы ваш пользовательский интерфейс javascript зависал, но если я не могу структурироватьмой код в разных файлах Я собираюсь испытать трудности с использованием возможности редактирования по телефону SL4A со встроенным jquery в каждом отдельном кодовом файле ...
Есть ли способ сделатьэто на самом деле работает?Кто-нибудь получил приложение HTML5 / javascript на Android с SL4A?