所以我在我的应用程序中实现了一个 SyncAdapter。因为我正在与 Google Tasks 同步,所以我使用用户的现有 Google 帐户。在应用程序中,用户必须转到首选项,启用同步并选择一个帐户。此时,我尝试获取一个 authToken,它将创建一个弹出窗口,要求用户授权我的应用程序使用他们选择的 Google 帐户。
如果用户以前从未安装过我的应用程序,这一切都很好。但是,现在假设用户卸载应用程序并在以后重新安装它。当他们打开应用程序时,这些设置当然不会被选中。但他们会发现,该应用程序无论如何都会与他们之前选择的 Google 帐户同步!
原因是 SyncAdapter 默认切换为同步。例如,这是安装后在进行任何更改之前的 Accounts & Sync 屏幕中的视图:
默认选中同步。首次安装时这并不重要,因为我的应用尚未获准访问他们的 Google 帐户。但是在重新安装时,它确实很重要。所以我的问题是:我需要添加/更改/删除什么才能使其默认未选中?
我的syncadapter.xml如下:
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.nononsenseapps.NotePad"
android:accountType="com.google"
android:supportsUploading="true"
android:userVisible="true" />
在清单中:
<service
android:name=".sync.SyncService"
android:exported="true" >
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
在用户在设置中选择帐户之前,我不会在 Java 代码中进行任何有关同步的调用。