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