Fix notifications not showing after contact permission revoked on Android 15.

Fixes #13671
This commit is contained in:
Cody Henthorne
2024-09-03 15:52:37 -04:00
parent 0c4725dfa7
commit 83c3cc6a6d
3 changed files with 6 additions and 4 deletions

View File

@@ -289,7 +289,7 @@ sealed class NotificationBuilder(protected val context: Context) {
val personBuilder: PersonCompat.Builder = PersonCompat.Builder()
.setBot(false)
.setName(notificationItem.getPersonName(context))
.setUri(notificationItem.getPersonUri())
.setUri(notificationItem.getPersonUri(context))
.setIcon(notificationItem.getPersonIcon(context))
if (includeShortcut) {

View File

@@ -1,5 +1,6 @@
package org.thoughtcrime.securesms.notifications.v2
import android.Manifest
import android.content.Context
import android.net.Uri
import android.text.SpannableString
@@ -22,6 +23,7 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.Slide
import org.thoughtcrime.securesms.mms.SlideDeck
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientUtil
import org.thoughtcrime.securesms.service.KeyCachingService
@@ -115,8 +117,8 @@ sealed class NotificationItem(val threadRecipient: Recipient, protected val reco
return timestamp.compareTo(other.timestamp)
}
fun getPersonUri(): String? {
return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact && authorRecipient.isSystemContact) {
fun getPersonUri(context: Context): String? {
return if (SignalStore.settings.messageNotificationsPrivacy.isDisplayContact && authorRecipient.isSystemContact && Permissions.hasAny(context, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS)) {
authorRecipient.contactUri.toString()
} else {
null

View File

@@ -281,7 +281,7 @@ public final class ConversationUtil {
return new Person.Builder()
.setKey(getShortcutId(recipient.getId()))
.setName(recipient.getDisplayName(context))
.setUri(recipient.isSystemContact() ? recipient.getContactUri().toString() : null)
.setUri(recipient.isSystemContact() && Permissions.hasAny(context, Manifest.permission.READ_CONTACTS, Manifest.permission.WRITE_CONTACTS) ? recipient.getContactUri().toString() : null)
.build();
}