【问题标题】:what location on an android device does the xamarin contact picker retrieve contacts from?xamarin 联系人选择器从 Android 设备上的哪个位置检索联系人?
【发布时间】:2017-01-02 16:06:41
【问题描述】:

似乎 android 有不同的位置来存储联系人(即电话、SIM、谷歌帐户)。我需要知道它用来确定将联系人拉到哪里的确切“路径”,因为我无法从不使用默认路径的用户设备中拉出联系人。我相信我已经浏览了该主题的所有先前帖子,但没有任何运气,Xamarin 论坛似乎也没有任何答案。任何帮助表示赞赏。

【问题讨论】:

    标签: android xamarin xamarin.android android-contacts


    【解决方案1】:

    它使用ContactsContract.Data.ContentUri 做一个光标来查找联系人。

    这可以在 Xamarin.Mobile 存储库中看到:https://github.com/xamarin/Xamarin.Mobile/blob/master/MonoDroid/Xamarin.Mobile/Contacts/AddressBook.cs#L109

    【讨论】:

    • 感谢您的快速回复。我很感激。那么,contactscontract.data.contenturi 是否指向实际设备上的 ..."/data/data/android.contacts.database/contacts.db" 之类的东西? (忘记确切的路径)我问是因为 android 似乎使不同操作系统版本之间的路径不同。 Xamarin URI 是否足够聪明,可以为正确的操作系统版本选择正确的路径?
    • URI 告诉 Android ContentProvider 它想要什么。提供商本身知道在哪里寻找联系人。您的应用程序不知道此来源,因为它使用 ContentProvider 作为中间人。此 ContentProvider 可能因 Android 版本而异,源也可能不同。
    • 好的,这有帮助。此外,在此之前还有一个问题解决了我的问题。因此,您要说的是,提供商将根据操作系统版本知道在哪里查找。如果是这种情况,那么只要用户为其联系人设置了“默认”位置,那么这个 URI 应该从那个源中提取吗? (当然只要应用有 READ_CONTACTS 权限)
    • “只要用户为其联系人设置了“默认”位置设置”是什么意思?
    • 在 Android 中,用户似乎可以将其默认联系位置设置为“SIM、电话或 Google 帐户”。因此,如果用户已将其默认位置设置为“SIM”,那么 URI 应该尝试仅从 SIM 中提取联系人,对吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-10
    • 2013-01-16
    • 1970-01-01
    • 2012-02-27
    • 1970-01-01
    • 2018-08-07
    相关资源
    最近更新 更多