在我正在处理的Android应用中,我使用AccountManager
存储用户的帐户信息并同步几个来源(我有两个响应android.content.SyncAdapter
的服务意图行动)。
但是,我没有同步联系人。尽管如此,如果我进入联系人应用程序并选择添加联系人,我会弹出一个弹出窗口,询问我应该在哪个帐户创建联系人。我的应用程序创建的帐户也会列在那里。我已尝试将android:supportsUploading="false"
放在<sync-adapter>
上,但无效。
我目前看到的唯一解决方案是创建一个空的,不可见的联系人同步服务android:supportsUploading="false"
,但这似乎是有史以来最大,最无用的黑客攻击。
帮助?
答案 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;
这样做可以解决这个问题