/**@class android.provider.BlockedNumberContract
@extends java.lang.Object

 <p>
 The contract between the blockednumber provider and applications. Contains definitions for
 the supported URIs and columns.
 </p>

 <h3> Overview </h3>
 <p>
 The content provider exposes a table containing blocked numbers. The columns and URIs for
 accessing this table are defined by the {@link android.provider.BlockedNumberContract.BlockedNumbers} class. Messages, and calls from
 blocked numbers are discarded by the platform. Notifications upon provider changes can be
 received using a {@link android.database.ContentObserver}.
 </p>
 <p>
 The platform will not block messages, and calls from emergency numbers as defined by
 {@link android.telephony.PhoneNumberUtils#isEmergencyNumber(String)}. If the user contacts
 emergency services, number blocking is disabled by the platform for a duration defined by
 {@link android.telephony.CarrierConfigManager#KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT}.
 </p>

 <h3> Permissions </h3>
 <p>
 Only the system, the default SMS application, and the default phone app
 (See {@link android.telecom.TelecomManager#getDefaultDialerPackage()}), and carrier apps
 (See {@link android.service.carrier.CarrierService}) can read, and write to the blockednumber
 provider. However, {@link #canCurrentUserBlockNumbers}(Context) can be accessed by any
 application.
 </p>

 <h3> Data </h3>
 <p>
 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 {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_ORIGINAL_NUMBER} column. A normalized version of phone
 numbers (if normalization is possible) is stored in {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_E164_NUMBER}
 column. The platform blocks calls, and messages from an address if it is present in in the
 {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_ORIGINAL_NUMBER} column or if the E164 version of the address
 matches the {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_E164_NUMBER} column.
 </p>

 <h3> Operations </h3>
 <dl>
 <dt><b>Insert</b></dt>
 <dd>
 <p>
 {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_ORIGINAL_NUMBER} is a required column that needs to be populated.
 Apps can optionally provide the {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_E164_NUMBER} which 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).
 <p>
 Attempting to insert an existing blocked number (same
 {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_ORIGINAL_NUMBER} column) will result in replacing the existing
 blocked number.
 <p>
 Examples:
 <pre>
 ContentValues values = new ContentValues();
 values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
 Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
 </pre>
 <pre>
 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);
 </pre>
 <pre>
 ContentValues values = new ContentValues();
 values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "12345@abdcde.com");
 Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
 </pre>
 </p>
 </dd>
 <dt><b>Update</b></dt>
 <dd>
 <p>
 Updates are not supported. Use Delete, and Insert instead.
 </p>
 </dd>
 <dt><b>Delete</b></dt>
 <dd>
 <p>
 Deletions can be performed as follows:
 <pre>
 ContentValues values = new ContentValues();
 values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890");
 Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
 getContentResolver().delete(uri, null, null);
 </pre>
 To check if a particular number is blocked, use the method
 {@link #isBlocked(Context, String)}.
 </p>
 </dd>
 <dt><b>Query</b></dt>
 <dd>
 <p>
 All blocked numbers can be enumerated as follows:
 <pre>
 Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI,
          new String[]{BlockedNumbers.COLUMN_ID, BlockedNumbers.COLUMN_ORIGINAL_NUMBER,
          BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);
 </pre>
 </p>
 </dd>
 <dt><b>Unblock</b></dt>
 <dd>
 <p>
 Use the method {@link #unblock(Context, String)} to unblock numbers.
 </p>
 </dd>

 <h3> Multi-user </h3>
 <p>
 Apps must use the method {@link #canCurrentUserBlockNumbers}(Context) before performing any
 operation on the blocked number provider. If {@link #canCurrentUserBlockNumbers}(Context) returns
 {@code false}, all operations on the provider will fail with a {@link SecurityException}. The
 platform will block calls, and messages from numbers in the provider independent of the current
 user.
 </p>
*/
var BlockedNumberContract = {

/**The authority for the blocked number provider */
AUTHORITY : "com.android.blockednumber",
/**A content:// style uri to the authority for the blocked number provider */
AUTHORITY_URI : "null",
/**@hide */
METHOD_IS_BLOCKED : "is_blocked",
/**@hide */
METHOD_UNBLOCK : "unblock",
/**@hide */
RES_NUMBER_IS_BLOCKED : "blocked",
/** Integer reason code used with {@link #RES_BLOCK_STATUS} to indicate that a call was not
 blocked.
 @hide
*/
STATUS_NOT_BLOCKED : "0",
/** Integer reason code used with {@link #RES_BLOCK_STATUS} to indicate that a call was blocked
 because it is in the list of blocked numbers maintained by the provider.
 @hide
*/
STATUS_BLOCKED_IN_LIST : "1",
/** Integer reason code used with {@link #RES_BLOCK_STATUS} to indicate that a call was blocked
 because it is from a restricted number.
 @hide
*/
STATUS_BLOCKED_RESTRICTED : "2",
/** Integer reason code used with {@link #RES_BLOCK_STATUS} to indicate that a call was blocked
 because it is from an unknown number.
 @hide
*/
STATUS_BLOCKED_UNKNOWN_NUMBER : "3",
/** Integer reason code used with {@link #RES_BLOCK_STATUS} to indicate that a call was blocked
 because it is from a pay phone.
 @hide
*/
STATUS_BLOCKED_PAYPHONE : "4",
/** Integer reason code used with {@link #RES_BLOCK_STATUS} to indicate that a call was blocked
 because it is from a number not in the users contacts.
 @hide
*/
STATUS_BLOCKED_NOT_IN_CONTACTS : "5",
/** Integer reason indicating whether a call was blocked, and if so why.
 @hide
*/
RES_BLOCK_STATUS : "block_status",
/**@hide */
RES_NUM_ROWS_DELETED : "num_deleted",
/**@hide */
METHOD_CAN_CURRENT_USER_BLOCK_NUMBERS : "can_current_user_block_numbers",
/**@hide */
RES_CAN_BLOCK_NUMBERS : "can_block",
/**@hide */
RES_ENHANCED_SETTING_IS_ENABLED : "enhanced_setting_enabled",
/**@hide */
RES_SHOW_EMERGENCY_CALL_NOTIFICATION : "show_emergency_call_notification",
/**@hide */
EXTRA_ENHANCED_SETTING_KEY : "extra_enhanced_setting_key",
/**@hide */
EXTRA_ENHANCED_SETTING_VALUE : "extra_enhanced_setting_value",
/**@hide */
EXTRA_CONTACT_EXIST : "extra_contact_exist",
/**@hide */
EXTRA_CALL_PRESENTATION : "extra_call_presentation",
/**Returns whether a given number is in the blocked list.

 <p> This matches the {@code phoneNumber} against the
 {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_ORIGINAL_NUMBER} column, and the E164 representation of the
 {@code phoneNumber} with the {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_E164_NUMBER} column.

 <p> Note that if the {@link #canCurrentUserBlockNumbers} is {@code false} for the user
 context {@code context}, this method will throw a {@link SecurityException}.
@return {Boolean} {@code true} if the {@code phoneNumber} is blocked.
*/
isBlocked : function(  ) {},

/**Unblocks the {@code phoneNumber} if it is blocked.

 <p> This deletes all rows where the {@code phoneNumber} matches the
 {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_ORIGINAL_NUMBER} column or the E164 representation of the
 {@code phoneNumber} matches the {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_E164_NUMBER} column.

 <p>To delete rows based on exact match with specific columns such as
 {@link android.provider.BlockedNumberContract.BlockedNumbers#COLUMN_ID} use
 {@link android.content.ContentProvider#delete(Uri, String, String[])} with
 {@link android.provider.BlockedNumberContract.BlockedNumbers#CONTENT_URI} URI.

 <p> Note that if the {@link #canCurrentUserBlockNumbers} is {@code false} for the user
 context {@code context}, this method will throw a {@link SecurityException}.
@return {Number} the number of rows deleted in the blocked number provider as a result of unblock.
*/
unblock : function(  ) {},

/**Checks if blocking numbers is supported for the current user.
 <p> Typically, blocking numbers is only supported for one user at a time.
@return {Boolean} {@code true} if the current user can block numbers.
*/
canCurrentUserBlockNumbers : function(  ) {},


};