Я пытаюсь создать виджет для Android, который показывает информацию из API Google, в частности API фитнеса. Прямо сейчас клиент Fitness API (объект GoogleAPIClient) настроен в основной активности как общедоступная статическая переменная, и функция onUpdate получает ее, вызывает .connect(), а затем пытается получить информацию из этого API. Он работает, но только когда активна основная активность приложения. Если я его закрою, то при следующем обновлении приложения произойдет сбой с ошибкой:
java.lang.RuntimeException: Unable to start receiver
Caused by: java.lang.NullPointerException
При вызове .connect() в функции onUpdate().
Есть ли правильный способ сделать это, что мне не хватает? Как мне сделать так, чтобы я мог получать информацию каждый раз, когда вызывается onUpdate, но по-прежнему обрабатывать вызов onConnectionFailed - я должен начать разрешение неудачного соединения (обычно просто предоставляя разрешения приложению или указывая учетную запись) внутри закрывающего Activity, а AppWidgetProvider не является действием, поэтому я не могу просто поместить клиентский объект в Provider, что было моей первой мыслью.
Могу ли я поместить клиента внутрь провайдера, а затем запустить новое действие, чтобы перейти к вызову вызова startResolutionForResult во время onConnectionFailed? Если да, то как мне запустить это намерение, чтобы оно считалось «окружающим классом» - это была ошибка, которую я получил, когда попытался указать Provider в качестве аргумента для startResolutionForResult.
Я новичок как в виджетах, так и в API Google, и все еще новичок в разработке Android в целом, хотя гораздо более опытен в этом, чем в виджетах API. Спасибо за любую помощь.