0

Google API、特に Fitness API からの情報を表示する Android ウィジェットを作成しようとしています。現在、Fitness API クライアント (GoogleAPIClient オブジェクト) は Main アクティビティで public static 変数として設定されており、onUpdate 関数はそれを取得して .connect() を呼び出し、その API から情報を取得しようとします。動作しますが、アプリのメイン アクティビティがアクティブな場合のみです。アプリを閉じると、次にアプリが更新されたときに次のエラーでクラッシュします。

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

onUpdate() 関数の .connect() 呼び出し時。

私が見逃しているこれを行う適切な方法はありますか?onUpdate が呼び出されるたびに情報を取得できるようにするにはどうすればよいですか? ただし、onConnectionFailed 呼び出しを引き続き処理します。アクティビティであり、AppWidgetProvider はアクティビティではないため、最初に考えたプロバイダにクライアント オブジェクトを配置することはできません。

クライアントをプロバイダー内に配置し、新しいアクティビティを起動して、onConnectionFailed 中に startResolutionForResult 呼び出しに渡すことはできますか? もしそうなら、「エンクロージングクラス」としてカウントされるようにそのインテントを開始するにはどうすればよいですか - これは、プロバイダーを startResolutionForResult の引数として入れようとしたときに発生したエラーでした。

私はウィジェットと Google API の両方に不慣れで、API のウィジェットよりもはるかに経験豊富ですが、Android 開発全般の初心者のようなものです。助けてくれてありがとう。

4

1 に答える 1

0

私が見逃しているこれを行う適切な方法はありますか?

を呼び出しonUpdate()て、作業を に委任します。そのサービスが Fit API と通信するようにします。が Fit API から結果を取得すると、 を使用してアプリ ウィジェットを更新し、が不要になったときに を呼び出します。ServicestartService()ServiceAppWidgetManagerstopSelf()Service

于 2015-06-21T23:36:01.047 に答える