aboutsummaryrefslogtreecommitdiffstats
path: root/OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java
diff options
context:
space:
mode:
authorDominik Schürmann <dominik@dominikschuermann.de>2015-11-23 09:06:12 +0100
committerDominik Schürmann <dominik@dominikschuermann.de>2015-11-23 09:06:12 +0100
commitc5bcbce28fa45d8d1e5714d111f3cc24a2c99d0e (patch)
treed7feab97088262b21343ae8e98955c0cc42b5378 /OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java
parentdc631e5c1542b09e1359a861e98a2c03b93e05cd (diff)
downloadopen-keychain-c5bcbce28fa45d8d1e5714d111f3cc24a2c99d0e.tar.gz
open-keychain-c5bcbce28fa45d8d1e5714d111f3cc24a2c99d0e.tar.bz2
open-keychain-c5bcbce28fa45d8d1e5714d111f3cc24a2c99d0e.zip
Show notification when READ_CONTACTS permission is denied in sync service, hide linked contact card if permission is denied
Diffstat (limited to 'OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java')
-rw-r--r--OpenKeychain/src/main/java/org/sufficientlysecure/keychain/ui/ViewKeyFragment.java31
1 files changed, 22 insertions, 9 deletions
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.