handle fetching contacts from null account_name

This commit is contained in:
tibbi 2018-05-09 16:21:16 +02:00
parent 24d1934320
commit b89cf120e4

View File

@ -445,7 +445,7 @@ class ContactsHelper(val activity: Activity) {
return groups return groups
} }
private fun getQuestionMarks() = "?,".times(displayContactSources.size).trimEnd(',') private fun getQuestionMarks() = "?,".times(displayContactSources.filter { it.isNotEmpty() }.size).trimEnd(',')
private fun getSourcesSelection(addMimeType: Boolean = false, addContactId: Boolean = false, useRawContactId: Boolean = true): String { private fun getSourcesSelection(addMimeType: Boolean = false, addContactId: Boolean = false, useRawContactId: Boolean = true): String {
val strings = ArrayList<String>() val strings = ArrayList<String>()
@ -456,7 +456,16 @@ class ContactsHelper(val activity: Activity) {
if (addContactId) { if (addContactId) {
strings.add("${if (useRawContactId) ContactsContract.Data.RAW_CONTACT_ID else ContactsContract.Data.CONTACT_ID} = ?") strings.add("${if (useRawContactId) ContactsContract.Data.RAW_CONTACT_ID else ContactsContract.Data.CONTACT_ID} = ?")
} else { } else {
strings.add("${ContactsContract.RawContacts.ACCOUNT_NAME} IN (${getQuestionMarks()})") // sometimes local device storage has null account_name, handle it properly
val accountnameString = StringBuilder()
if (displayContactSources.contains("")) {
accountnameString.append("(")
}
accountnameString.append("${ContactsContract.RawContacts.ACCOUNT_NAME} IN (${getQuestionMarks()})")
if (displayContactSources.contains("")) {
accountnameString.append(" OR ${ContactsContract.RawContacts.ACCOUNT_NAME} IS NULL)")
}
strings.add(accountnameString.toString())
} }
return TextUtils.join(" AND ", strings) return TextUtils.join(" AND ", strings)
@ -472,7 +481,7 @@ class ContactsHelper(val activity: Activity) {
if (contactId != null) { if (contactId != null) {
args.add(contactId.toString()) args.add(contactId.toString())
} else { } else {
args.addAll(displayContactSources) args.addAll(displayContactSources.filter { it.isNotEmpty() })
} }
return args.toTypedArray() return args.toTypedArray()