【问题标题】:Android 11 get birthday of contactsAndroid 11 获取联系人的生日
【发布时间】:2020-11-04 06:38:15
【问题描述】:

我正在尝试查询所有联系人的生日。这就是我正在使用的--

    private val PROJECTION: Array<out String> = arrayOf(
        ContactsContract.Contacts._ID,
        ContactsContract.Contacts.LOOKUP_KEY,
        ContactsContract.Contacts.DISPLAY_NAME_PRIMARY
    )

    private val SELECTION: String =
        "${ContactsContract.Data.MIMETYPE} = ? AND ${ContactsContract.CommonDataKinds.Event.TYPE} = ${ContactsContract.CommonDataKinds.Event.TYPE_BIRTHDAY}"

    // Defines a variable for the search string
    private val searchString: String = ContactsContract.CommonDataKinds.Event.CONTENT_ITEM_TYPE

    // Defines the array to hold values that replace the ?
    private val selectionArgs = arrayOf(searchString)
    override fun onCreateLoader(loaderId: Int, args: Bundle?): Loader<Cursor> {
        // Starts the query
        return activity?.let {
            return CursorLoader(
                it,
                ContactsContract.Contacts.CONTENT_URI,
                PROJECTION,
                SELECTION,
                selectionArgs,
                null
            )
        } ?: throw IllegalStateException()
    }

我得到了

Caused by: android.database.sqlite.SQLiteException: no such column: mimetype (code 1 SQLITE_ERROR): , while compiling: SELECT _id, lookup, display_name FROM view_contacts WHERE ((1)) AND (mimetype = ? AND data2 = 3)

mimetype 字段是否已从 Android 11 中移除?任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: android android-contacts


    【解决方案1】:

    ContactsContract.Contacts.CONTENT_URI 的表格仅包含非常通用的联系信息,例如 _ID、DISPLAY_NAME 等。 它不包含联系人的实际数据,例如电话、电子邮件、事件等。

    这些存储在单独的表 ContactsContract.Data.CONTENT_URI 中,因此您需要将 cursorLoader 中的表更改为该表。

    此外,您的投影需要更改为:

    private val PROJECTION: Array<out String> = arrayOf(
        Data.CONTACT_ID,
        Contacts.LOOKUP_KEY,
        Contacts.DISPLAY_NAME
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 2016-10-08
      • 1970-01-01
      相关资源
      最近更新 更多