3

コア機能のために、アプリケーションでsyncadaptorを広範囲に使用しています。また、syncadaptorが提供する定期的な更新も使用します。したがって、「アカウントと同期」が電話で無効になっていると、私のアプリケーションはほとんど役に立たなくなります。同期をオンにするためにContentResolver.setMasterSyncAutomatically(true)を実行することは、悪い習慣または失礼と見なされますか?メインアカウントと同期が無効になっていると定期的な同期が機能しないため、ContentResolver.setIsSyncableを実行するだけでは役に立ちません。このシナリオを処理する一般的な方法は何ですか?

前もって感謝します、

-v-

4

1 に答える 1

15

私はこれを悪い習慣と呼ぶでしょう。

同期には、異なる機能を提供する2つの異なる有効化フラグがあります。

マスター同期は、アカウントの種類やコンテンツの種類に関係なく、すべての同期を有​​効にする単一のフラグです。この設定は、[アカウントと同期]ページの[自動同期]であり、ユーザーは通常、バッテリーを節約するためにオフにします。一部のユーザーは、それを使用して一種の「邪魔しない」モードに入る可能性があります。プログラム的に、これはチェックされ、チェックされていないContentResolver.setMasterSyncAutomatically()

次に、アカウントと権限のペアに有効化フラグがあります。だから、グーグルアカウントを言う。グーグルアカウントをクリックすると、サブページが表示されます...ドライブの同期、グーグル再生音楽の同期、連絡先の同期、Gmailの同期...など。それぞれがアカウント(com.google)とオーソリティ(com)です。 android.contacts)、ペアになっています。それらは個別に制御できるので、連絡先を同期するGoogleアカウントを作成できますが、カレンダーは同期できません。さらに、リスト内の利用可能なアイテムでさえ異なる可能性があります-私はグーグルミュージックがインストールされているアカウントとインストールされていないアカウントを持っているかもしれません-そのため、そのサブページのリストは異なる可能性があり、チェックされているものとチェックされていないものは異なる可能性があります。同期可能な権限がアタッチされている場合、アカウントには緑色の同期サークルが表示されますが、アカウント自体は単独で同期可能ではないことに注意してください。プログラム的に、ContentResolver.setSyncAutomatically()、およびを介して有効化/無効化(グレー表示)されContentResolver.setIsSyncable()ます。構成されていない場合はグレー表示になります。

アプリは、独自のアカウントと権限のペアに対して同期のオンとオフを切り替える権利の範囲内にあります(ただし、ユーザーの希望を尊重する必要があります)。アプリの同期設定ページの「同期を有効にする」チェックボックスのように考えてください。 A&Sサブページから(get/set)SyncAutomatically()

はい、アプリはマスター同期フラグを変更できます-しかし、そうすることで、ユーザーの電話がどのように機能するかを決定するために、ユーザーの頭を越えているかどうかを本当に考慮する必要があります。これは、電話の操作方法がわからないユーザーを支援し、真剣に取り組むそうするユーザーを怒らせる。電話全体の同期設定を変更したアプリを許可なくすぐにアンインストールします。私が個人的に最も遠いのは、ユーザーが同期を構成するときにダイアログをポップアップすることです。「同期は構成されていますが、[アカウントと同期]ページで自動同期がオンになるまで実行されません。オンにしますか?自動同期をオンにしますか?」次に、A&Sページに移動して、「はい」と答えた場合にオンにするインテントを起動します。これにより、ユーザーは、単に後ろで物事を変えてそれをさらに謎にするのではなく、自分の電話がどのように機能するかを理解するのに役立ちます。

全体として、ユーザーの同意を得ずに電話を再構成しないでください。

于 2012-07-17T14:09:06.617 に答える