2015-08-12 2 views
0

Я знаю, что этот вопрос был сделан миллион раз здесь, но ни один из ответов не соответствует моим потребностям.Телефонный звонок, звонок от Android до Кордовы

У меня есть BroadcastReceiver, которые принимают данные из других приложений, поэтому Выполнение кода запускается на основе кода Android.

Я видел, что webView.sendJavascript устарел, но у меня нет Кордовы webview, доступной на BroadcastReceiver.

Я заметил, что вы могли бы сделать что-то вроде этого:

webView.loadUrl("javascript:console.log('hello from wear: " + mStopsNumber + "');"); 

Но опять-таки я не могу получить доступ к cordova, webview объектов из BroadcastReceiver

Я не понимаю, как есть так много вопросов которые просят что-то подобное, и все отвечают о том, как построить плагин Cordova. Я знаю, как создать свой собственный плагин Cordova, но, насколько я понимаю, плагин Cordova запускается в JS-коде с codova.exec(whatever, и это не мой сценарий.

Что мне не хватает?

ответ

0

Сделайте свой BroadcastReceiver a static внутренний класс вашего CordovaPlugin. Теперь вы можете получить доступ к полям вашего CordovaPlugin внутри BoradcastReceiver. Поэтому вам нужно сохранить CordovaWebView в поле initialize в поле, чтобы получить к нему доступ.


Edit: Для того, чтобы использовать ваш BroadcastReceiver вы должны либо зарегистрировать его с помощью кода, так как Android Manifest требует экземпляр вашего CordovaPlugin, чтобы создать его экземпляр, который он не может иметь.

Или вы идете по-другому и вместо того, чтобы сделать вас BroadcastReceiver внутренним классом, вы сохраняете CordovaWebView в статическом контексте, чтобы вы могли добраться до него откуда угодно.

Примечание. Эта ошибка возникает из-за того, что внутренний класс non static имеет неявный параметр конструктора: это родительский объект.

+0

Ницца! Но когда я это делаю, я получаю BroadcastReceiver: не могу создать экземпляр класса; нет пустого конструктора :( – rubdottocom

Смежные вопросы