выполнение функций JS из плагина Android Phonegap - PullRequest
0 голосов
/ 16 января 2012

Я создаю приложение Phonegap для Android , используя Phonegap v1.3 . Я написал плагин для phonegap, который получает определенный файл из системы, а затем выполняет функцию js.
Поскольку все плагины расширяют класс Phonegap Плагин , я не могу выполнить функцию js напрямую оттуда. поэтому из выполнить функцию плагина, я выполняю ->

PluginResult result = null;
Home home = new Home();
result = new PluginResult(Status.OK);
home.loadPage("pic.jpg");

В этом доме мой основной класс, который расширяет Droidgap.
В доме у меня есть функция loadPage

public void loadPage(String filePath){   
super.setIntegerProperty("loadUrlTimeoutValue", 60000);
super.loadUrl("javascript:navigator.somefunc(\""+filePath+"\");");  
}

Проблема в том, что функция setIntegerProperty DroidGap выбрасывает NPE. Вот логи.

01-16 11:41:32.364: W/System.err(13162): java.lang.NullPointerException
01-16 11:41:32.364: W/System.err(13162):    at com.phonegap.DroidGap.setIntegerProperty(DroidGap.java:738)
01-16 11:41:32.364: W/System.err(13162):    at e2o.mobile.Home.loadSharePage(Home.java:120)
01-16 11:41:32.364: W/System.err(13162):    at com.phonegap.plugins.checkImage.CheckUploadImage.execute(CheckUploadImage.java:158)
01-16 11:41:32.364: W/System.err(13162):    at com.phonegap.api.PluginManager$1.run(PluginManager.java:150)
01-16 11:41:32.364: W/System.err(13162):    at java.lang.Thread.run(Thread.java:1019)

В основном в функции setIntegerProperty -

public void setIntegerProperty(String name, int value) {
    this.getIntent().putExtra(name, value);
}

this.getIntent () возвращает значение NULL. Можете ли вы сказать мне, что я скучаю. Или в моем сценарии использования, как мне выполнить эту функцию js. Если я не использую

super.setIntegerProperty("loadUrlTimeoutValue", 60000, intent);

тогда и loadUrl ничего не делает. JS не вызывается, или время ожидания истекло.

1 Ответ

2 голосов
/ 16 января 2012

Это потому, что вы создаете новый объект Home.Объект создается с помощью конструктора, но метод onCreate не вызывается, поэтому большая часть правильной настройки объекта не выполняется.Вот почему вы получаете исключение NullPointerException.

Вы возвращаете новый PluginResult со статусом OK, поэтому функция успеха может выполнить для вас метод navigator.somefunc (filePath).Так будет намного проще.

...