0

我正在尝试制作一个显示来自 Google API 的信息的 android 小部件,特别是 Fitness API。现在,Fitness API 客户端(GoogleAPIClient 对象)在 Main 活动中设置为公共静态变量,onUpdate 函数获取它,调用 .connect(),然后尝试从该 API 获取信息。它有效,但仅当应用程序的主要活动处于活动状态时 - 如果我关闭它,那么下次应用程序更新时,它会因错误而崩溃:

    java.lang.RuntimeException: Unable to start receiver
    Caused by: java.lang.NullPointerException

在 onUpdate() 函数中的 .connect() 调用处。

有没有我想念的正确方法来做到这一点?如何做到这一点,以便每次调用 onUpdate 时都能获取信息,但仍处理 onConnectionFailed 调用 - 我必须开始解决失败的连接(通常只是给予应用程序权限或指定帐户)活动,而AppWidgetProvider不是活动,所以我不能只是将客户端对象放在Provider中,这是我的第一个想法。

我可以将客户端放在 Provider 中,然后在 onConnectionFailed 期间启动一个新活动以传递给 startResolutionForResult 调用吗?如果是这样,我将如何启动该意图以便将其视为“封闭类” - 这是我尝试将 Provider 作为 startResolutionForResult 的参数时遇到的错误。

我对小部件和谷歌 API 都是新手,而且总体上仍然是 Android 开发的初学者,尽管这方面的经验比 API 小部件的经验要丰富得多。谢谢你的帮助。

4

1 回答 1

0

有没有我想念的正确方法来做到这一点?

通过调用将onUpdate()工作委托给 a 。让该服务与 Fit API 对话。当从 Fit API 获取结果时,它会使用 更新应用小部件,然后在不再需要时调用。ServicestartService()ServiceAppWidgetManagerstopSelf()Service

于 2015-06-21T23:36:01.047 回答