如何将SyncAdapter定义为默认不同步?

时间:2012-02-22 10:38:05

标签: android android-syncadapter

所以我在我的应用程序中实现了SyncAdapter。我使用用户现有的Google帐户,因为我正在与Google Tasks同步。在应用程序中,用户必须转到首选项,启用同步并选择一个帐户。此时我尝试获取一个authToken,它会创建一个弹出窗口,要求用户授权我的应用使用他们选择的Google帐户。

enter image description here

如果用户以前从未安装过我的应用程序,这一切都很有用。但是,现在假设用户卸载应用程序并在以后重新安装它。当他们打开应用程序时,当然会取消选中设置。但他们发现的是该应用程序与之前选择的Google帐户同步!

原因是默认情况下SyncAdapter切换为同步。例如。这是账户和账户中的视图。在进行任何更改之前安装后同步屏幕:

默认情况下会进行同步检查。首次安装时,这并不重要,因为我的应用尚未获准使用其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代码中进行任何有关同步的调用。

2 个答案:

答案 0 :(得分:1)

ContentResolver.setSyncAutomatically(account, ContactsContract.AUTHORITY, false);

答案 1 :(得分:0)

您可以存储SharedPreference并在SyncService start上进行检查。如果为false,请停止服务,不要做任何事情。

当您从用户配置设置为启用同步时,请记住.apply()或.commit()新的共享首选项值。