Я реализую услугу биллинга, основанную на образце Dungeons (именно так рекомендую Google по этому поводу). Это немного осложнено следующими фактами:В службе выставления счетов, основанной на подземельях, bindService возвращает NullPointerException
- Основной класс службы живет в проекте библиотеки (потому что я хочу многократно переустанавливать код). Поскольку this stackoverflow answer предлагает услугу в библиотечном проекте, могут возникнуть проблемы, я сделал абстрактную услугу и унаследовал ее в подпроектах; это также позволяет мне использовать разные открытые ключи для каждого reskin (что желательно).
- Существует множество элементов пользовательского интерфейса, которые должны знать, поддерживается ли биллинг как можно скорее.
Следовательно я звоню функцию для проверки счетов поддерживаются от onCreate()
метода первого запуска деятельности (на самом деле какой-либо деятельности, но предпочтение будет записать так что это должно произойти только один раз).
В образце Dungeons код, чтобы проверить, если платежный поддерживается пытается связываться со службой биллинга, таким образом (от Service
класса):
boolean bindResult = bindService(
new Intent(Consts.MARKET_BILLING_SERVICE_ACTION),
this, // ServiceConnection.
Context.BIND_AUTO_CREATE);
этот вызов бросает NullPointerException
. Я проверил довольно внимательно, и ни одна из этих вещей не является нулевой; это происходит в пределах функция, по-видимому, на строке 370 ContextWrapper.java.
Из-за this other stackoverflow answer Я задавался вопросом, может ли проверка выставления счета с onCreate()
может быть преждевременной, но проект примера подземелий снова вызывает его здесь, поэтому я не думаю, что это так.
Я использую гораздо более позднюю версию Android (3.1), так что это может иметь эффект, но я бы хотел узнать возможные причины этого. Еще одна вещь: Eclipse сообщает мне, что customIntent
имеет значение NULL, но не совсем понятно, что это значит, и я не смог найти много об этом.