9

私が開発する必要があるアプリの場合、SyncAdapter を使用して gmail と facebook の両方のデータと同期できる必要があります。リモートサーバーではなく、ローカルのFacebookおよびGmailアプリ(利用可能な場合)と同期したいと考えています。ローカル アプリと同期すると、バッテリーの使用量が減り、ネットワークの使用量が減り、同期が速くなります。もちろん、必要に応じて、適切な権限を設定します。

私の質問:

  • アプリ (gmail/facebook) のいずれかが利用可能な場合、それらにデータ (メッセージ、イベントなど) を照会することは可能ですか?
  • そうでない場合、ユーザーがそれぞれのユーザー名とパスワードを再度入力する必要なくサーバーにクエリを実行できるようにする認証トークン (または任意の種類の資格情報) をそれらから取得することは可能ですか?
  • それが可能であれば、facebook または gmail アプリの同期の直後に自動的に同期して、新しいデータをすぐに取得することもできますか?

これらのいずれも利用できない場合は、自分でデータをフェッチする必要があると思うので、この質問には関係ありません。

4

2 に答える 2

3

Facebookについて話すことはできませんが、GMailアプリでは許可されていません。以前は機能していましたが、その後、Googleアプリのみがメールコンテンツプロバイダーにクエリを実行できるように保護されています。最善の方法は、ラベルAPIを使用してメッセージの数を取得することです。標準のAndroidを使用して、Googleサービスの認証トークン(ClientLoginまたはOAuth2)を取得できますAccountManager。次に、それを使用して特定のAPIに接続し、実際のデータを取得する必要があります。

于 2012-08-03T06:47:18.620 に答える
2

ああ、今、私はあなたの質問をよりよく理解しました。関心のあるデータをアプリのローカル コピーから直接取得する方法はないと思います。これは興味深いアイデアであり、あなたが提案する速度/スペース/帯域幅の理由から合理的ですが、現在利用できないアプリからの重要なサポートが必要になります.

アプリがローカル データの共有をサポートしていたとしても、ユーザーがパスワードを再入力するのを回避しようとすることは、ほぼ確実に不可能です。結局のところ、GMail アプリはどのようにしてアプリにすべてのデータを読み取る権限があることを確認するのでしょうか? おそらく、GMail のユーザー名とパスワードの入力を求められます。同じデバイス上にいるだけでは、完全な信頼を意味するわけではありません。

サンプル プロジェクトで示されているように、SyncAdapter を使用して認証トークンを保存すると、ユーザーが資格情報を 1 回入力するように制限できるはずですが、これが最善の方法です。


以前:

SDK に含まれている SampleSyncAdapter をご覧になりましたか?

これらの手順では、サンプルにアクセスする方法の概要を簡単に説明します。

Eclipse を使用している場合は、実際にはさらに簡単です。サンプル プロジェクトを取得するには:

  1. File> New>を選択Other...
  2. Android>を選択Android Sample Project
  3. プロジェクトに適用可能なターゲット/API レベルを選択します (おそらく最新のもの)。
  4. 興味のあるサンプル プロジェクト (この場合は SampleSyncAdapter) を選択します。

サンプル プロジェクトは、SyncAdapters の使用方法の優れた例であり、GMail、Facebook などとの接続にすぐに適応できるはずです。

于 2012-07-27T01:33:00.823 に答える