public class BlockedNumberContract
extends Object
| java.lang.Object | |
| android.provider.BlockedNumberContract | |
阻止的数字提供商与应用程序之间的合同。 包含支持的URI和列的定义。
内容提供者公开包含被阻止的数字的表格。 用于访问此表的列和URI由BlockedNumberContract.BlockedNumbers类定义。 消息和来自阻止号码的呼叫被平台丢弃。 可以使用ContentObserver接收提供者更改的通知。
该平台不会阻止消息,并按照isEmergencyNumber(String)定义的紧急号码进行isEmergencyNumber(String) 。 如果用户联系紧急服务,则在KEY_DURATION_BLOCKING_DISABLED_AFTER_EMERGENCY_INT定义的持续时间内,平台禁用号码阻止。
只有系统,默认SMS应用程序和默认电话应用程序(请参阅getDefaultDialerPackage() )和运营商应用程序(请参阅CarrierService )可以读取并写入阻止的数字提供商。 但是,任何应用程序都可以访问canCurrentUserBlockNumbers(Context) 。
除了普通的电话号码,被阻止的号码提供商还可以存储用户可以从中接收消息的地址(例如电子邮件)以及呼叫。 被阻止的号码存储在COLUMN_ORIGINAL_NUMBER列中。 电话号码的规范化版本(如果规范化可能)存储在COLUMN_E164_NUMBER列中。 如果地址存在于COLUMN_ORIGINAL_NUMBER列中,或者地址的E164版本与COLUMN_E164_NUMBER列匹配,平台将阻止呼叫和来自地址的消息。
COLUMN_ORIGINAL_NUMBER是需要填充的必填列。 应用程序可以选择提供COLUMN_E164_NUMBER ,这是电话号码的E164表示。 如果应用程序不提供它,提供程序会自动填充此列。 请注意,如果规范化失败或地址不是电话号码(例如:电子邮件),则不会填充此列。
尝试插入现有的阻止号码(相同的 COLUMN_ORIGINAL_NUMBER列)将导致替换现有的阻止号码。
例子:
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, "[email protected]"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values);
更新不受支持。 使用删除,然后插入。
删除可以执行如下:
ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); getContentResolver().delete(uri, null, null);To check if a particular number is blocked, use the method
isBlocked(Context, String).
所有被阻止的数字可以枚举如下:
Cursor c = getContentResolver().query(BlockedNumbers.CONTENT_URI,
new String[]{BlockedNumbers.COLUMN_ID, BlockedNumbers.COLUMN_ORIGINAL_NUMBER,
BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);
使用方法 unblock(Context, String)来取消阻止号码。
在对阻止的号码提供商执行任何操作之前,应用必须使用方法canCurrentUserBlockNumbers(Context) 。 如果canCurrentUserBlockNumbers(Context)返回false ,则提供程序上的所有操作都将失败,并显示SecurityException 。 该平台将阻止呼叫,并且来自提供商中号码的消息独立于当前用户。
Nested classes |
|
|---|---|
class |
BlockedNumberContract.BlockedNumbers 常量与阻止的号码列表进行交互。 |
常量(Constants) |
|
|---|---|
String |
AUTHORITY 被阻止的号码提供商的权限 |
Fields |
|
|---|---|
public static final Uri |
AUTHORITY_URI 内容:// style uri给被阻止号码提供商的权限 |
公共方法(Public methods) |
|
|---|---|
static boolean |
canCurrentUserBlockNumbers(Context context) 检查当前用户是否支持阻止号码。 |
static boolean |
isBlocked(Context context, String phoneNumber) 返回给定的号码是否在阻止列表中。 |
static int |
unblock(Context context, String phoneNumber) 如果被阻止,则 |
继承方法(Inherited methods) |
|
|---|---|
java.lang.Object
|
|
boolean canCurrentUserBlockNumbers (Context context)
检查当前用户是否支持阻止号码。
通常,阻止号码一次只支持一个用户。
| 参数(Parameters) | |
|---|---|
context |
Context
|
| 返回(Returns) | |
|---|---|
boolean |
true if the current user can block numbers. |
boolean isBlocked (Context context, String phoneNumber)
返回给定的号码是否在阻止列表中。
这符合 phoneNumber对 COLUMN_ORIGINAL_NUMBER列,的E164表示 phoneNumber与 COLUMN_E164_NUMBER列。
请注意,如果 canCurrentUserBlockNumbers(Context)为 false的用户上下文 context ,此方法将抛出一个 SecurityException 。
| 参数(Parameters) | |
|---|---|
context |
Context
|
phoneNumber |
String
|
| 返回(Returns) | |
|---|---|
boolean |
true if the phoneNumber is blocked. |
int unblock (Context context, String phoneNumber)
如果阻止,则 phoneNumber阻止 phoneNumber 。
这将删除其中的所有行 phoneNumber匹配 COLUMN_ORIGINAL_NUMBER列或的E164表示 phoneNumber的匹配 COLUMN_E164_NUMBER柱。
要根据与特定列(如 COLUMN_ID完全匹配删除行, COLUMN_ID使用 delete(Uri, String, String[])和 CONTENT_URI URI。
请注意,如果 canCurrentUserBlockNumbers(Context)为 false的用户上下文 context ,此方法将抛出一个 SecurityException 。
| 参数(Parameters) | |
|---|---|
context |
Context
|
phoneNumber |
String
|
| 返回(Returns) | |
|---|---|
int |
the number of rows deleted in the blocked number provider as a result of unblock. |