Skip to content

Commit 5664666

Browse files
committed
updating the way permissions are handled
1 parent e2807bf commit 5664666

File tree

4 files changed

+24
-20
lines changed

4 files changed

+24
-20
lines changed

app/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ ext {
4545
}
4646

4747
dependencies {
48-
implementation 'com.simplemobiletools:commons:4.5.18'
48+
implementation 'com.simplemobiletools:commons:4.5.19'
4949
implementation 'joda-time:joda-time:2.9.9'
5050
implementation 'com.facebook.stetho:stetho:1.5.0'
5151
implementation 'com.android.support.constraint:constraint-layout:1.1.2'

app/src/main/kotlin/com/simplemobiletools/contacts/activities/MainActivity.kt

Lines changed: 18 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package com.simplemobiletools.contacts.activities
22

3-
import android.Manifest
43
import android.app.SearchManager
54
import android.content.Context
65
import android.content.Intent
76
import android.graphics.drawable.ColorDrawable
87
import android.net.Uri
98
import android.os.Bundle
109
import android.os.Handler
11-
import android.support.v4.app.ActivityCompat
1210
import android.support.v4.view.MenuItemCompat
1311
import android.support.v4.view.ViewPager
1412
import android.support.v7.widget.SearchView
@@ -41,10 +39,6 @@ import kotlinx.android.synthetic.main.fragment_recents.*
4139
import java.io.FileOutputStream
4240

4341
class MainActivity : SimpleActivity(), RefreshContactsListener {
44-
// just some random constants
45-
private val GET_ACCOUNTS_PERMISSION = 34
46-
private val WRITE_CALL_LOG_PERMISSION = 35
47-
4842
private var isSearchOpen = false
4943
private var searchMenuItem: MenuItem? = null
5044
private var werePermissionsHandled = false
@@ -70,29 +64,36 @@ class MainActivity : SimpleActivity(), RefreshContactsListener {
7064
// just get a reference to the database to make sure it is created properly
7165
dbHelper
7266

67+
handlePermission(PERMISSION_READ_CALL_LOG) {
68+
if (it) {
69+
handlePermission(PERMISSION_WRITE_CALL_LOG) {
70+
checkContactPermissions()
71+
}
72+
} else {
73+
checkContactPermissions()
74+
}
75+
76+
}
77+
storeStateVariables()
78+
checkWhatsNewDialog()
79+
}
80+
81+
private fun checkContactPermissions() {
7382
handlePermission(PERMISSION_READ_CONTACTS) {
7483
werePermissionsHandled = true
7584
if (it) {
7685
handlePermission(PERMISSION_WRITE_CONTACTS) {
7786
// workaround for upgrading from version 3.x to 4.x as we added a new permission from an already granted permissions group
78-
if (!hasPermission(PERMISSION_GET_ACCOUNTS)) {
79-
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.GET_ACCOUNTS), GET_ACCOUNTS_PERMISSION)
80-
}
81-
82-
if (!hasPermission(PERMISSION_WRITE_CALL_LOG)) {
83-
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.WRITE_CALL_LOG), WRITE_CALL_LOG_PERMISSION)
87+
handlePermission(PERMISSION_GET_ACCOUNTS) {
88+
storeLocalAccountData()
89+
initFragments()
8490
}
85-
86-
storeLocalAccountData()
87-
initFragments()
8891
}
8992
} else {
9093
storeLocalAccountData()
9194
initFragments()
9295
}
9396
}
94-
storeStateVariables()
95-
checkWhatsNewDialog()
9697
}
9798

9899
override fun onResume() {

app/src/main/kotlin/com/simplemobiletools/contacts/fragments/RecentsFragment.kt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import android.util.AttributeSet
66
import com.simplemobiletools.commons.extensions.beVisibleIf
77
import com.simplemobiletools.commons.extensions.hasPermission
88
import com.simplemobiletools.commons.extensions.isActivityDestroyed
9+
import com.simplemobiletools.commons.helpers.PERMISSION_READ_CALL_LOG
910
import com.simplemobiletools.commons.helpers.PERMISSION_WRITE_CALL_LOG
1011
import com.simplemobiletools.contacts.activities.EditContactActivity
1112
import com.simplemobiletools.contacts.adapters.RecentCallsAdapter
@@ -24,7 +25,9 @@ class RecentsFragment(context: Context, attributeSet: AttributeSet) : MyViewPage
2425
override fun placeholderClicked() {
2526
activity!!.handlePermission(PERMISSION_WRITE_CALL_LOG) {
2627
if (it) {
27-
activity?.refreshContacts(RECENTS_TAB_MASK)
28+
activity!!.handlePermission(PERMISSION_READ_CALL_LOG) {
29+
activity?.refreshContacts(RECENTS_TAB_MASK)
30+
}
2831
}
2932
}
3033
}

app/src/main/kotlin/com/simplemobiletools/contacts/helpers/ContactsHelper.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1318,7 +1318,7 @@ class ContactsHelper(val activity: Activity) {
13181318
fun getRecents(callback: (ArrayList<RecentCall>) -> Unit) {
13191319
Thread {
13201320
val calls = ArrayList<RecentCall>()
1321-
if (!activity.hasPermission(PERMISSION_WRITE_CALL_LOG)) {
1321+
if (!activity.hasPermission(PERMISSION_WRITE_CALL_LOG) || !activity.hasPermission(PERMISSION_READ_CALL_LOG)) {
13221322
callback(calls)
13231323
return@Thread
13241324
}

0 commit comments

Comments
 (0)