From e0128e7e31f2cca46ff28473477ebb32223f58e9 Mon Sep 17 00:00:00 2001 From: AsamK Date: Wed, 3 Feb 2021 18:44:45 +0100 Subject: [PATCH] Fix crash when changing contact color without contacts permission. On mulit-device app, after the contact color is changed, a multi-device contact update job is triggered, which tries to access the system avatar. This causes a crash if the user has revoked the contacts permission. --- .../securesms/jobs/MultiDeviceContactUpdateJob.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java index 52ba93c95b..0e99983fda 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java +++ b/app/src/main/java/org/thoughtcrime/securesms/jobs/MultiDeviceContactUpdateJob.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.jobs; +import android.Manifest; import android.content.res.AssetFileDescriptor; import android.database.Cursor; import android.net.Uri; @@ -20,6 +21,7 @@ import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint; +import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.profiles.AvatarHelper; import org.thoughtcrime.securesms.providers.BlobProvider; import org.thoughtcrime.securesms.recipients.Recipient; @@ -304,7 +306,11 @@ public class MultiDeviceContactUpdateJob extends BaseJob { if (uri == null) { return Optional.absent(); } - + + if (!Permissions.hasAny(context, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS)) { + return Optional.absent(); + } + Uri displayPhotoUri = Uri.withAppendedPath(uri, ContactsContract.Contacts.Photo.DISPLAY_PHOTO); try {