Unblock Contact Android |top| May 2026

The SMS/MMS app maintains its own blocked table: content://sms/blocked . This table is not automatically synced with the BlockedNumberProvider on unblock. Google Messages and Samsung Messages use a periodic sync job (run every 6-12 hours). Therefore, unblocking a contact does not immediately unblock SMS delivery.

// 4. Request carrier sync (for RCS/VoLTE carriers) val cm = context.getSystemService(CarrierMessagingService::class.java) cm?.notifyBlockedNumbersChanged(subId, listOf(normalized), false) // false = unblock unblock contact android

When you unblock a contact, the system resets the local flags but does reset the SafetyNet score. Consequently, the unblocked contact may still be routed to "Spam & Blocked" folder for 2-7 days until the local spam confidence score decays. The SMS/MMS app maintains its own blocked table:

fun fullyUnblockContact(context: Context, phoneNumber: String, subId: Int) val normalized = PhoneNumberUtils.normalizeNumber(phoneNumber) // 1. Delete from system blocked provider context.contentResolver.delete( BlockedNumbers.CONTENT_URI, "number = ?", arrayOf(normalized) ) Therefore, unblocking a contact does not immediately unblock

// 3. Force telephony cache refresh val tm = context.getSystemService(TelephonyManager::class.java) tm.clearBlockedNumbersForSubscriber(subId)

Look at carrier_blocked_timestamp in call_log . If this timestamp is after the user's unblock action, the carrier is overriding the OS. 7. Android 14+ Auto-verify and Spam Persistence Android 14 introduced "Auto-verify" (Google Play Services) and "Verified SMS." These features create a third-party spam score attached to a number, stored in Google's SafetyNet database (cloud-side).