mirror of
https://github.com/signalapp/Signal-Android.git
synced 2025-12-23 20:48:43 +00:00
Fix crash from incoming call without contacts permission.
When the device is in Do Not Disturb mode and a call comes in from a system contact, the app crashes if the user has revoked the contacts permission. The crash occurs because in Do Not Disturb mode Signal tries to check if the contact is starred.
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
package org.thoughtcrime.securesms.notifications;
|
||||
|
||||
import android.Manifest;
|
||||
import android.app.NotificationManager;
|
||||
import android.content.Context;
|
||||
import android.database.Cursor;
|
||||
@@ -12,6 +13,7 @@ import androidx.annotation.WorkerThread;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.permissions.Permissions;
|
||||
import org.thoughtcrime.securesms.recipients.Recipient;
|
||||
import org.thoughtcrime.securesms.util.ServiceUtil;
|
||||
|
||||
@@ -84,6 +86,10 @@ public final class DoNotDisturbUtil {
|
||||
private static boolean isContactStarred(@NonNull Context context, @NonNull Recipient recipient) {
|
||||
if (!recipient.resolve().isSystemContact()) return false;
|
||||
|
||||
if (!Permissions.hasAny(context, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try (Cursor cursor = context.getContentResolver().query(recipient.resolve().getContactUri(), new String[]{ContactsContract.Contacts.STARRED}, null, null, null)) {
|
||||
if (cursor == null || !cursor.moveToFirst()) return false;
|
||||
return cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.STARRED)) == 1;
|
||||
|
||||
Reference in New Issue
Block a user