首页 文章

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

提问于
浏览
1

在Android应用程序中,我使用 AccountManager 来存储用户的帐户信息并同步几个来源(我有两个响应 android.content.SyncAdapter 意图操作的服务) .

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

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

救命?

2 回答

  • 2

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

    请参阅 com.android.contacts.model.Sources.queryAccounts() (填充.readOnly标志)和 com.android.contacts.model.Sources.getAccounts()com.android.contacts.util.AccountSelectionUtil.getSelectAccountDialog() 用于填充联系人对话框) .

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

    -Tim

  • 0

    如果您不想同步联系人,请更改您的syncadapter 's xml file to the authority of your apps contact provider . If you are not maintaining a contacts provider for your app. Just make a dummy provider and gives its authority to your sync adapter' s xml文件的权限 . 在您的syncadapter的xml文件中授予 com.android.contacts 权限将导致您提到的此行为:

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

    这样做可以解决这个问题

相关问题