From 716af4d4f4180c807d10c4e6e4aa53738ccdfef9 Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 2 Aug 2016 11:10:16 +0200 Subject: [PATCH] Fix for contacts not being fetched when permission is denied and is not asked anymore --- src/org/linphone/LinphoneActivity.java | 7 +++++++ src/org/linphone/LinphoneContact.java | 24 +++++++++--------------- submodules/linphone | 2 +- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/src/org/linphone/LinphoneActivity.java b/src/org/linphone/LinphoneActivity.java index 8562488fe..69d24330e 100644 --- a/src/org/linphone/LinphoneActivity.java +++ b/src/org/linphone/LinphoneActivity.java @@ -1167,6 +1167,10 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta checkAndRequestPermission(Manifest.permission.READ_CONTACTS, PERMISSIONS_REQUEST_CONTACTS); } + private boolean willContactsPermissionBeAsked() { + return LinphonePreferences.instance().firstTimeAskingForPermission(Manifest.permission.READ_CONTACTS) || ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.READ_CONTACTS); + } + public void checkAndRequestWriteContactsPermission() { checkAndRequestPermission(Manifest.permission.WRITE_CONTACTS, 0); } @@ -1267,6 +1271,9 @@ public class LinphoneActivity extends Activity implements OnClickListener, Conta ContactsManager.getInstance().enableContactsAccess(); ContactsManager.getInstance().fetchContactsAsync(); fetchedContactsOnce = true; + } else if (contacts != PackageManager.PERMISSION_GRANTED && !willContactsPermissionBeAsked()) { + ContactsManager.getInstance().fetchContactsAsync(); + fetchedContactsOnce = true; } else { checkAndRequestReadContactsPermission(); } diff --git a/src/org/linphone/LinphoneContact.java b/src/org/linphone/LinphoneContact.java index a50ec6fb3..82f038bc0 100644 --- a/src/org/linphone/LinphoneContact.java +++ b/src/org/linphone/LinphoneContact.java @@ -419,6 +419,7 @@ public class LinphoneContact implements Serializable, Comparable