MTK平台上电话黑名单功能总结
2016-08-01 11:30
483 查看
作者 Zhonglong.chen
黑名单作为一项非常重要的功能,一直以来Android原生都没有提供支持,因此各芯片厂商都有自己的实现方案。本文总结了MTK平台芯片在Android 4.4,Android 5.x和Android 6.0这三个版本上黑名单功能的实现方式。
MTK平台上以Content Provider的形式提供黑名单数据库的接口,但在三个版本上实现略有差异。
l Type:枚举型,取值为BLOCK_VOICE_CALL,BLOCK_VIDEO_CALL和BLOCK_VOICE_AND_VIDEO_CALL三种,可见视频电话与普通电话黑名单是可以分开管理的
Android 5.x引入了MPlugin架构,将黑名单数据库放到OPxxPlugin中实现,与Android 4.4相比黑名单数据库变化不大,只是移除Type字段,不再区分视频电话和普通电话。
l NAME:联系人姓名,可为空
Android 6.0将黑名单功能从OPxxPlugin中独立出来,放到单独的Blacklist模块中实现,并且数据库变化也非常大。
表1 MTK平台上三个版本黑名单对比
publicboolean
autoReject(String
number){
Cursor
cursor =
null;
cursor =
mContext.getContentResolver().query(Uri.parse(RCS_BLACK_LIST_URI),
RCS_BLACK_LIST_PROJECTION,
null,
null,
null);
if (cursor ==
null) {
return false;
}
String
blockNumber;
boolean result =
false;
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
blockNumber =
cursor.getString(0);
if (PhoneNumberUtils.compare(number,
blockNumber)) {
result =
true;
break;
}
cursor.moveToNext();
}
cursor.close();
return result;
}
l canCurrentUserBlockNumbers:判断能否访问黑名单数据库,只有默认的电话/短信等少数应用才可以访问
l isBlocked:判断某个号码是否黑名单
BlockedNumberContract只保存黑名单电话号码,不会自动关联联系人,并且除了保存原始电话号码在COLUMN_ORIGINAL_NUMBER外,还自动生成并保存格式化的电话号码在COLUMN_E164_NUMBER。
黑名单作为一项非常重要的功能,一直以来Android原生都没有提供支持,因此各芯片厂商都有自己的实现方案。本文总结了MTK平台芯片在Android 4.4,Android 5.x和Android 6.0这三个版本上黑名单功能的实现方式。
MTK平台上以Content Provider的形式提供黑名单数据库的接口,但在三个版本上实现略有差异。
1. Android4.4
l Number:电话号码l Type:枚举型,取值为BLOCK_VOICE_CALL,BLOCK_VIDEO_CALL和BLOCK_VOICE_AND_VIDEO_CALL三种,可见视频电话与普通电话黑名单是可以分开管理的
2. Android5.x
l Number:电话号码Android 5.x引入了MPlugin架构,将黑名单数据库放到OPxxPlugin中实现,与Android 4.4相比黑名单数据库变化不大,只是移除Type字段,不再区分视频电话和普通电话。
3. Android6.0
l PHONE_NUMBER:电话号码l NAME:联系人姓名,可为空
Android 6.0将黑名单功能从OPxxPlugin中独立出来,放到单独的Blacklist模块中实现,并且数据库变化也非常大。
表1 MTK平台上三个版本黑名单对比
| Android 4.4 | Android 5.x | Android 6.0 |
CONTENT_URI | content://reject/list | content://reject/list | content://com.cmcc.ccs.black_list |
表结构 | Number Type | Number | PHONE_NUMBER NAME |
访问权限 | READ_REJECT & WRITE_REJECT | READ_REJECT & WRITE_REJECT | 无 |
实现类 | 未知 | OP01Plugin.apk com.mediatek.phone.callrejection.CallRejectContentProvider | Blacklist.apk com.mediatek.rcs.blacklist.BlacklistProvider |
代表芯片 | MT6582 | MT6753 | MT6755 |
4. 查询黑名单
黑名单数据库中存储的是原始的电话号码,并未进行格式化,因此不能直接通过query方式查询某个号码是否黑名单,而必须读出黑名单中的所有电话号码,再通过PhoneNumberUtils.compare方法逐个进行模糊匹配。publicboolean
autoReject(String
number){
Cursor
cursor =
null;
cursor =
mContext.getContentResolver().query(Uri.parse(RCS_BLACK_LIST_URI),
RCS_BLACK_LIST_PROJECTION,
null,
null,
null);
if (cursor ==
null) {
return false;
}
String
blockNumber;
boolean result =
false;
cursor.moveToFirst();
while (!cursor.isAfterLast())
{
blockNumber =
cursor.getString(0);
if (PhoneNumberUtils.compare(number,
blockNumber)) {
result =
true;
break;
}
cursor.moveToNext();
}
cursor.close();
return result;
}
5. AndroidN
Android N原生提供黑名单数据库支持,实现类在android.provider.BlockedNumberContract,提供的接口主要有:l canCurrentUserBlockNumbers:判断能否访问黑名单数据库,只有默认的电话/短信等少数应用才可以访问
l isBlocked:判断某个号码是否黑名单
BlockedNumberContract只保存黑名单电话号码,不会自动关联联系人,并且除了保存原始电话号码在COLUMN_ORIGINAL_NUMBER外,还自动生成并保存格式化的电话号码在COLUMN_E164_NUMBER。
相关文章推荐
- MTK平台uart log 抓取及8 秒重启、开机震动功能总结
- MTK平台用Socket实现HTTP请求总结
- MTK平台用Socket实现HTTP请求总结
- 2416平台,u-boot-1.3.4支持U盘功能问题总结
- 总结win7平台的dep机制-由phoneme jit功能异常说起
- MTK 平台memory(emmc)移植常见问题总结
- MTK平台发展及各芯片功能介绍
- mtk平台 电话图标badge 显示问题
- 2416平台,u-boot-1.3.4支持U盘功能问题总结
- MTK平台动态加载功能实现
- MTK平台Sub Camera支持AF功能
- MTK平台用Socket实现HTTP请求总结
- mtk平台,相关问题总结
- MTK平台用Socket实现HTTP请求总结
- 2416平台,u-boot-1.3.4支持U盘功能问题总结 .
- MTK平台 MMI学习总结
- [转载]MTK平台用Socket实现 HTTP请求总结
- 方正快速开发平台ES2007数据导入功能问题总结
- ios手机功能:电话 短信 通讯录 总结
- MTK 平台手势唤醒功能