diff --git a/app/build.gradle b/app/build.gradle index 6d73b7b0..c4fb5b78 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,7 +45,7 @@ ext { } dependencies { - implementation 'com.simplemobiletools:commons:4.5.18' + implementation 'com.simplemobiletools:commons:4.5.19' implementation 'joda-time:joda-time:2.9.9' implementation 'com.facebook.stetho:stetho:1.5.0' implementation 'com.android.support.constraint:constraint-layout:1.1.2' 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 2998da4c..1b78e8e1 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt @@ -1,6 +1,5 @@ package com.simplemobiletools.contacts.activities -import android.Manifest import android.app.SearchManager import android.content.Context import android.content.Intent @@ -8,7 +7,6 @@ import android.graphics.drawable.ColorDrawable import android.net.Uri import android.os.Bundle import android.os.Handler -import android.support.v4.app.ActivityCompat import android.support.v4.view.MenuItemCompat import android.support.v4.view.ViewPager import android.support.v7.widget.SearchView @@ -41,10 +39,6 @@ import kotlinx.android.synthetic.main.fragment_recents.* import java.io.FileOutputStream class MainActivity : SimpleActivity(), RefreshContactsListener { - // just some random constants - private val GET_ACCOUNTS_PERMISSION = 34 - private val WRITE_CALL_LOG_PERMISSION = 35 - private var isSearchOpen = false private var searchMenuItem: MenuItem? = null private var werePermissionsHandled = false @@ -70,29 +64,36 @@ class MainActivity : SimpleActivity(), RefreshContactsListener { // just get a reference to the database to make sure it is created properly dbHelper + handlePermission(PERMISSION_READ_CALL_LOG) { + if (it) { + handlePermission(PERMISSION_WRITE_CALL_LOG) { + checkContactPermissions() + } + } else { + checkContactPermissions() + } + + } + storeStateVariables() + checkWhatsNewDialog() + } + + private fun checkContactPermissions() { handlePermission(PERMISSION_READ_CONTACTS) { werePermissionsHandled = true if (it) { handlePermission(PERMISSION_WRITE_CONTACTS) { // workaround for upgrading from version 3.x to 4.x as we added a new permission from an already granted permissions group - if (!hasPermission(PERMISSION_GET_ACCOUNTS)) { - ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.GET_ACCOUNTS), GET_ACCOUNTS_PERMISSION) + handlePermission(PERMISSION_GET_ACCOUNTS) { + storeLocalAccountData() + initFragments() } - - if (!hasPermission(PERMISSION_WRITE_CALL_LOG)) { - ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_CALL_LOG), WRITE_CALL_LOG_PERMISSION) - } - - storeLocalAccountData() - initFragments() } } else { storeLocalAccountData() initFragments() } } - storeStateVariables() - checkWhatsNewDialog() } override fun onResume() { diff --git a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt index a6f14702..c1319997 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt @@ -6,6 +6,7 @@ import android.util.AttributeSet import com.simplemobiletools.commons.extensions.beVisibleIf import com.simplemobiletools.commons.extensions.hasPermission import com.simplemobiletools.commons.extensions.isActivityDestroyed +import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG import com.simplemobiletools.contacts.activities.EditContactActivity import com.simplemobiletools.contacts.adapters.RecentCallsAdapter @@ -24,7 +25,9 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage override fun placeholderClicked() { activity!!.handlePermission(PERMISSION_WRITE_CALL_LOG) { if (it) { - activity?.refreshContacts(RECENTS_TAB_MASK) + activity!!.handlePermission(PERMISSION_READ_CALL_LOG) { + activity?.refreshContacts(RECENTS_TAB_MASK) + } } } } 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 9b53113a..c78e0ac2 100644 --- a/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt +++ b/app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt @@ -1318,7 +1318,7 @@ class ContactsHelper(val activity: Activity) { fun getRecents(callback: (ArrayList) -> Unit) { Thread { val calls = ArrayList() - if (!activity.hasPermission(PERMISSION_WRITE_CALL_LOG)) { + if (!activity.hasPermission(PERMISSION_WRITE_CALL_LOG) || !activity.hasPermission(PERMISSION_READ_CALL_LOG)) { callback(calls) return@Thread }