From 86b952ad827be2fa0d8bf4a4a6c2fca32c6eb925 Mon Sep 17 00:00:00 2001 From: tibbi Date: Sun, 17 Dec 2017 22:30:06 +0100 Subject: [PATCH] properly fill all contact emails at the details activity --- .../contacts/activities/MainActivity.kt | 8 ++++- .../contacts/helpers/ContactsHelper.kt | 32 ++++++------------- 2 files changed, 16 insertions(+), 24 deletions(-) diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt index 4a6600f9..bc4691be 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -3,6 +3,7 @@ package com.simplemobiletools.contacts.activities import android.content.Intent import android.graphics.Paint import android.os.Bundle +import android.util.Log import android.view.Menu import android.view.MenuItem import com.simplemobiletools.commons.extensions.* @@ -27,6 +28,8 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { private var storedPrimaryColor = 0 private var storedStartNameWithSurname = false + private var isFirstResume = true + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) @@ -87,7 +90,10 @@ class MainActivity : SimpleActivity(), RefreshRecyclerViewListener { contacts_placeholder_2.setOnClickListener { showFilterDialog() } - initContacts() + if (!isFirstResume) { + initContacts() + } + isFirstResume = false } override fun onPause() { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt index d8fc6ae3..2e024ea8 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -113,20 +113,24 @@ class ContactsHelper(val activity: BaseSimpleActivity) { } } - private fun getEmails(): SparseArray { + private fun getEmails(contactId: Int? = null): SparseArray { val emails = SparseArray() val uri = ContactsContract.CommonDataKinds.Email.CONTENT_URI val projection = arrayOf( - ContactsContract.CommonDataKinds.Phone.CONTACT_ID, + ContactsContract.CommonDataKinds.Email.CONTACT_ID, ContactsContract.CommonDataKinds.Email.DATA, ContactsContract.CommonDataKinds.Email.TYPE ) + + val selection = if (contactId == null) null else "${ContactsContract.CommonDataKinds.Email.CONTACT_ID} = ?" + val selectionArgs = if (contactId == null) null else arrayOf(contactId.toString()) + var cursor: Cursor? = null try { - cursor = activity.contentResolver.query(uri, projection, null, null, null) + cursor = activity.contentResolver.query(uri, projection, selection, selectionArgs, null) if (cursor?.moveToFirst() == true) { do { - val id = cursor.getIntValue(ContactsContract.CommonDataKinds.Phone.CONTACT_ID) + val id = cursor.getIntValue(ContactsContract.CommonDataKinds.Email.CONTACT_ID) val email = cursor.getStringValue(ContactsContract.CommonDataKinds.Email.DATA) val type = cursor.getIntValue(ContactsContract.CommonDataKinds.Email.TYPE) @@ -167,24 +171,6 @@ class ContactsHelper(val activity: BaseSimpleActivity) { return pairs } - fun getContactEmails(id: Int): String { - val uri = ContactsContract.CommonDataKinds.Email.CONTENT_URI - val projection = arrayOf(ContactsContract.CommonDataKinds.Email.DATA) - val selection = "${ContactsContract.CommonDataKinds.Email.CONTACT_ID} = ?" - val selectionArgs = arrayOf(id.toString()) - var cursor: Cursor? = null - try { - cursor = activity.contentResolver.query(uri, projection, selection, selectionArgs, null) - if (cursor?.moveToFirst() == true) { - return cursor.getStringValue(ContactsContract.CommonDataKinds.Email.DATA) - } - } finally { - cursor?.close() - } - - return "" - } - fun getContactNumber(id: Int): String { val uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI val projection = arrayOf(ContactsContract.CommonDataKinds.Phone.NUMBER) @@ -221,7 +207,7 @@ class ContactsHelper(val activity: BaseSimpleActivity) { val surname = cursor.getStringValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME) ?: "" val photoUri = cursor.getStringValue(ContactsContract.CommonDataKinds.Phone.PHOTO_URI) ?: "" val number = getContactNumber(id) - val emails = Emails() + val emails = getEmails(id)[id] ?: Emails() val accountName = cursor.getStringValue(ContactsContract.RawContacts.ACCOUNT_NAME) return Contact(id, firstName, middleName, surname, photoUri, number, emails, accountName) }