aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Gultsch <daniel@gultsch.de>2017-11-17 10:28:51 +0100
committerDaniel Gultsch <daniel@gultsch.de>2017-11-17 10:28:51 +0100
commit5e15c482069dc7be7526b41e5925853f2463c62b (patch)
treee04a3ac8a789e93be4643ddffee08ccfcc52491d
parenta337be982f9c43f8e9473cdaae1f5c6883416f10 (diff)
refactore phone helper to ignore security exception
-rw-r--r--src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java2
-rw-r--r--src/main/java/eu/siacs/conversations/utils/PhoneHelper.java64
2 files changed, 31 insertions, 35 deletions
diff --git a/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java b/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
index 9a699b5..fe18b54 100644
--- a/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
+++ b/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java
@@ -141,7 +141,7 @@ public class PublishProfilePictureActivity extends XmppActivity {
}
});
- this.defaultUri = PhoneHelper.getSelfiUri(getApplicationContext());
+ this.defaultUri = PhoneHelper.getProfilePictureUri(getApplicationContext());
}
private void chooseAvatar(boolean crop) {
diff --git a/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java b/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java
index 3242cfc..380afc5 100644
--- a/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java
+++ b/src/main/java/eu/siacs/conversations/utils/PhoneHelper.java
@@ -82,45 +82,23 @@ public class PhoneHelper {
}
}
- private static class NotThrowCursorLoader extends CursorLoader {
-
- public NotThrowCursorLoader(Context c, Uri u, String[] p, String s, String[] sa, String so) {
- super(c, u, p, s, sa, so);
- }
-
- @Override
- public Cursor loadInBackground() {
-
- try {
- return (super.loadInBackground());
- } catch (Throwable e) {
- return(null);
- }
+ public static Uri getProfilePictureUri(Context context) {
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context.checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
+ return null;
}
-
- }
-
- public static Uri getSelfiUri(Context context) {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M
- && context.checkSelfPermission(Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED) {
+ final String[] projection = new String[]{Profile._ID, Profile.PHOTO_URI};
+ final Cursor cursor;
+ try {
+ cursor = context.getContentResolver().query(Profile.CONTENT_URI, projection, null, null, null);
+ } catch (SecurityException e) {
return null;
}
- String[] mProjection = new String[]{Profile._ID, Profile.PHOTO_URI};
- Cursor mProfileCursor = context.getContentResolver().query(
- Profile.CONTENT_URI, mProjection, null, null, null);
-
- if (mProfileCursor == null || mProfileCursor.getCount() == 0) {
+ if (cursor == null) {
return null;
- } else {
- mProfileCursor.moveToFirst();
- String uri = mProfileCursor.getString(1);
- mProfileCursor.close();
- if (uri == null) {
- return null;
- } else {
- return Uri.parse(uri);
- }
}
+ final String uri = cursor.moveToFirst() ? cursor.getString(1) : null;
+ cursor.close();
+ return uri == null ? null : Uri.parse(uri);
}
public static String getVersionName(Context context) {
@@ -135,4 +113,22 @@ public class PhoneHelper {
return "unknown";
}
}
+
+ private static class NotThrowCursorLoader extends CursorLoader {
+
+ private NotThrowCursorLoader(Context c, Uri u, String[] p, String s, String[] sa, String so) {
+ super(c, u, p, s, sa, so);
+ }
+
+ @Override
+ public Cursor loadInBackground() {
+
+ try {
+ return (super.loadInBackground());
+ } catch (Throwable e) {
+ return (null);
+ }
+ }
+
+ }
}