From c5bcbce28fa45d8d1e5714d111f3cc24a2c99d0e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Sch=C3=BCrmann?= Date: Mon, 23 Nov 2015 09:06:12 +0100 Subject: Show notification when READ_CONTACTS permission is denied in sync service, hide linked contact card if permission is denied --- .../keychain/ui/ViewKeyFragment.java | 31 +++++++++++++++------- 1 file changed, 22 insertions(+), 9 deletions(-) (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java') diff --git a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java index 7be695de0..dda2a680a 100644 --- a/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java +++ b/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java @@ -22,10 +22,12 @@ package org.sufficientlysecure.keychain.ui; import java.io.IOException; import java.util.List; +import android.Manifest; import android.annotation.TargetApi; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; +import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.Bitmap; import android.net.Uri; @@ -35,6 +37,7 @@ import android.os.Bundle; import android.os.Handler; import android.provider.ContactsContract; import android.support.v4.app.LoaderManager; +import android.support.v4.content.ContextCompat; import android.support.v4.content.CursorLoader; import android.support.v4.content.Loader; import android.support.v7.widget.CardView; @@ -241,9 +244,9 @@ public class ViewKeyFragment extends LoaderFragment implements Bitmap picture; if (mIsSecret) { - picture = ContactHelper.loadMainProfilePhoto(resolver, false); + picture = ContactHelper.loadMainProfilePhoto(getActivity(), resolver, false); } else { - picture = ContactHelper.loadPhotoByContactId(resolver, contactId, false); + picture = ContactHelper.loadPhotoByContactId(getActivity(), resolver, contactId, false); } if (picture != null) mSystemContactPicture.setImageBitmap(picture); @@ -419,13 +422,7 @@ public class ViewKeyFragment extends LoaderFragment implements getLoaderManager().initLoader(LOADER_ID_LINKED_IDS, null, this); } - - Bundle linkedContactData = new Bundle(); - linkedContactData.putLong(LOADER_EXTRA_LINKED_CONTACT_MASTER_KEY_ID, masterKeyId); - linkedContactData.putBoolean(LOADER_EXTRA_LINKED_CONTACT_IS_SECRET, mIsSecret); - - // initialises loader for contact query so we can listen to any updates - getLoaderManager().initLoader(LOADER_ID_LINKED_CONTACT, linkedContactData, this); + initLinkedContactLoader(masterKeyId, mIsSecret); break; } @@ -465,6 +462,22 @@ public class ViewKeyFragment extends LoaderFragment implements } } + private void initLinkedContactLoader(long masterKeyId, boolean isSecret) { + if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_CONTACTS) + == PackageManager.PERMISSION_DENIED) { + Log.w(Constants.TAG, "loading linked system contact not possible READ_CONTACTS permission denied!"); + hideLinkedSystemContact(); + return; + } + + Bundle linkedContactData = new Bundle(); + linkedContactData.putLong(LOADER_EXTRA_LINKED_CONTACT_MASTER_KEY_ID, masterKeyId); + linkedContactData.putBoolean(LOADER_EXTRA_LINKED_CONTACT_IS_SECRET, isSecret); + + // initialises loader for contact query so we can listen to any updates + getLoaderManager().initLoader(LOADER_ID_LINKED_CONTACT, linkedContactData, this); + } + /** * This is called when the last Cursor provided to onLoadFinished() above is about to be closed. * We need to make sure we are no longer using it. -- cgit v1.2.3