BlockedNumberContract
  public
  
  
  
  class
  BlockedNumberContract
  
    extends Object
  
  
  
  
  
  
| java.lang.Object | |
| ↳ | android.provider.BlockedNumberContract | 
The contract between the blockednumber provider and applications. Contains definitions for the supported URIs and columns.
Overview
 The content provider exposes a table containing blocked numbers. The columns and URIs for
 accessing this table are defined by the BlockedNumbers class. Messages, and calls from
 blocked numbers are discarded by the platform. Notifications upon provider changes can be
 received using a ContentObserver.
 
 The platform will not block messages, and calls from emergency numbers as defined by
 PhoneNumberUtils.isEmergencyNumber(String). If the user contacts
 emergency services, number blocking is disabled by the platform for a duration defined by
 CarrierConfigManager.KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT.
 
Permissions
 Only the system, the default SMS application, and the default phone app
 (See TelecomManager.getDefaultDialerPackage()), and carrier apps
 (See CarrierService) can read, and write to the blockednumber
 provider. However, canCurrentUserBlockNumbers(android.content.Context) can be accessed by any
 application.
 
Data
 Other than regular phone numbers, the blocked number provider can also store addresses (such
 as email) from which a user can receive messages, and calls. The blocked numbers are stored
 in the BlockedNumbers.COLUMN_ORIGINAL_NUMBER column. A normalized version of phone
 numbers (if normalization is possible) is stored in BlockedNumbers.COLUMN_E164_NUMBER
 column. The platform blocks calls, and messages from an address if it is present in in the
 BlockedNumbers.COLUMN_ORIGINAL_NUMBER column or if the E164 version of the address
 matches the BlockedNumbers.COLUMN_E164_NUMBER column.
 
Operations
- Insert
- 
 BlockedNumbers.COLUMN_ORIGINAL_NUMBERis a required column that needs to be populated. Apps can optionally provide theBlockedNumbers.COLUMN_E164_NUMBERwhich is the phone number's E164 representation. The provider automatically populates this column if the app does not provide it. Note that this column is not populated if normalization fails or if the address is not a phone number (eg: email).Attempting to insert an existing blocked number (same BlockedNumbers.COLUMN_ORIGINAL_NUMBERcolumn) will result in replacing the existing blocked number.Examples: ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); values.put(BlockedNumbers.COLUMN_E164_NUMBER, "+11234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "12345@abdcde.com"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); 
- Update
- 
 Updates are not supported. Use Delete, and Insert instead. 
- Delete
- 
 Deletions can be performed as follows: ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); getContentResolver().delete(uri, null, null); isBlocked(android.content.Context, java.lang.String).
- Query
- 
 All blocked numbers can be enumerated as follows: Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI, new String[]{BlockedNumbers.COLUMN_ID, BlockedNumbers.COLUMN_ORIGINAL_NUMBER, BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);
- Unblock
- 
 Use the method unblock(android.content.Context, java.lang.String)to unblock numbers.
Multi-user
 Apps must use the method canCurrentUserBlockNumbers(android.content.Context) before performing any
 operation on the blocked number provider. If canCurrentUserBlockNumbers(android.content.Context) returns
 false, all operations on the provider will fail with a SecurityException. The
 platform will block calls, and messages from numbers in the provider independent of the current
 user.
 
Summary
| Nested classes | |
|---|---|
| 
        
        
        
        
        class | BlockedNumberContract.BlockedNumbersConstants to interact with the blocked numbers list. | 
| Constants | |
|---|---|
| String | AUTHORITYThe authority for the blocked number provider | 
| Fields | |
|---|---|
| 
    public
    static
    final
    Uri | AUTHORITY_URIA content:// style uri to the authority for the blocked number provider | 
| Public methods | |
|---|---|
| 
        
        
        static
        
        
        boolean | 
      canCurrentUserBlockNumbers(Context context)
      Checks if blocking numbers is supported for the current user. | 
| 
        
        
        static
        
        
        boolean | 
      isBlocked(Context context, String phoneNumber)
      Returns whether a given number is in the blocked list. | 
| 
        
        
        static
        
        
        int | 
      unblock(Context context, String phoneNumber)
      Unblocks the  | 
| Inherited methods | |
|---|---|
Constants
AUTHORITY
public static final String AUTHORITY
The authority for the blocked number provider
Constant Value: "com.android.blockednumber"
Fields
AUTHORITY_URI
public static final Uri AUTHORITY_URI
A content:// style uri to the authority for the blocked number provider
Public methods
canCurrentUserBlockNumbers
public static boolean canCurrentUserBlockNumbers (Context context)
Checks if blocking numbers is supported for the current user.
Typically, blocking numbers is only supported for one user at a time.
| Parameters | |
|---|---|
| context | Context | 
| Returns | |
|---|---|
| boolean | trueif the current user can block numbers. | 
isBlocked
public static boolean isBlocked (Context context, String phoneNumber)
Returns whether a given number is in the blocked list.
 This matches the phoneNumber against the
 BlockedNumbers.COLUMN_ORIGINAL_NUMBER column, and the E164 representation of the
 phoneNumber with the BlockedNumbers.COLUMN_E164_NUMBER column.
 
 Note that if the canCurrentUserBlockNumbers(Context) is false for the user
 context context, this method will throw a SecurityException.
 
 This method may take several seconds to complete, so it should
 only be called from a worker thread.
| Parameters | |
|---|---|
| context | Context | 
| phoneNumber | String | 
| Returns | |
|---|---|
| boolean | trueif thephoneNumberis blocked. | 
unblock
public static int unblock (Context context, String phoneNumber)
Unblocks the phoneNumber if it is blocked.
 
 This deletes all rows where the phoneNumber matches the
 BlockedNumbers.COLUMN_ORIGINAL_NUMBER column or the E164 representation of the
 phoneNumber matches the BlockedNumbers.COLUMN_E164_NUMBER column.
 
To delete rows based on exact match with specific columns such as
 BlockedNumbers.COLUMN_ID use
 ContentProvider.delete(Uri, String, String[]) with
 BlockedNumbers.CONTENT_URI URI.
 
 Note that if the canCurrentUserBlockNumbers(Context) is false for the user
 context context, this method will throw a SecurityException.
 
 This method may take several seconds to complete, so it should
 only be called from a worker thread.
| Parameters | |
|---|---|
| context | Context | 
| phoneNumber | String | 
| Returns | |
|---|---|
| int | the number of rows deleted in the blocked number provider as a result of unblock. | 
Content and code samples on this page are subject to the licenses described in the Content License. Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
Last updated 2025-02-10 UTC.
