kopia lustrzana https://github.com/ryukoposting/Signal-Android
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.fork-5.53.8
rodzic
e0128e7e31
commit
341a31da00
|
@ -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;
|
||||
|
|
Ładowanie…
Reference in New Issue