如果我不想同步联系人怎么办?

时间:2011-08-08 09:25:11

标签: android contacts sync

在我正在处理的Android应用中,我使用AccountManager存储用户的帐户信息并同步几个来源(我有两个响应android.content.SyncAdapter的服务意图行动)。

但是,我没有同步联系人。尽管如此,如果我进入联系人应用程序并选择添加联系人,我会弹出一个弹出窗口,询问我应该在哪个帐户创建联系人。我的应用程序创建的帐户也会列在那里。我已尝试将android:supportsUploading="false"放在<sync-adapter>上,但无效。

我目前看到的唯一解决方案是创建一个空的,不可见的联系人同步服务android:supportsUploading="false",但这似乎是有史以来最大,最无用的黑客攻击。

帮助?

2 个答案:

答案 0 :(得分:2)

在我看来,您必须同时指定android:supportsUploading="false"并且您的内容权限必须为android:contentAuthority="com.android.contacts"(ContactsContract.AUTHORITY)。

请参阅填充.readOnly标记的com.android.contacts.model.Sources.queryAccounts()com.android.contacts.model.Sources.getAccounts() com.android.contacts.util.AccountSelectionUtil.getSelectAccountDialog()填充联系人对话框。

我不清楚这是否会产生额外的(可能不合需要的)副作用 - 特别是考虑到您指定的contentAuthority在概念上与您想要的相反。

-Tim

答案 1 :(得分:0)

如果您不想同步联系人,请将您的syncadapter的xml文件的权限更改为您的应用联系人提供商的权限。如果您没有维护应用的联系人提供商。只需创建一个虚拟提供程序,并将其权限授予同步适配器的xml文件。在您的syncadapter的xml文件中授予com.android.contacts权限将导致您提到的此行为:

&#34;但是,我没有同步联系人。尽管如此,如果我进入联系人应用程序并选择添加联系人,我会弹出一个弹出窗口,询问我应该在哪个帐户创建联系人。我的应用程序创建的帐户也会列在那里。我试过把android:supportsUploading="false"放在我的身上,不起作用。&#34;

这样做可以解决这个问题