数据库及持久化模块负责电话服务子系统中的SIM卡/短彩信等模块持久化数据存储,提供DataShare访问接口。
/base/telephony/data_storage # 数据库及持久化
├─ common # 通用文件
│ ├─ include # 头文件目录
│ └─ src # 实现代码目录
├─ figures # Readme资源文件
├─ opkey # 随卡框架
│ ├─ include # 头文件目录
│ └─ src # 实现代码目录
├─ pdp_profile # 网络运营商
│ ├─ include # 头文件目录
│ └─ src # 实现代码目录
├─ signature # 签名文件
├─ sim # sim卡
│ ├─ include # 头文件目录
│ └─ src # 实现代码目录
├─ sms_mms # 短彩信
│ ├─ include # 头文件目录
│ └─ src # 实现代码目录
└─ test # 测试相关
└── unit_test # 单元测试相关代码
开发语言:C++
软件约束:需要与以下服务配合使用:公共基础子库系统,应用框架子系统。
硬件约束:无
使用场景:当用户需要获取电话服务子系统中的SIM卡/短彩信等模块持久化数据时,可通过DataShareHelper提供的增/删/改/查接口来获取数据。
访问时需要提供对应的权限和URI。
表 1 增/删/改/查接口
接口定义 | 接口描述 |
---|---|
int Insert(Uri &uri, const DataShare::DataShareValuesBucket &value) | 插入数据 |
int Delete(const Uri &uri, const DataShare::DataSharePredicates &predicates) | 删除数据 |
int Update(Uri &uri, const DataSharePredicates &predicates, const DataShareValuesBucket &value) | 更新数据 |
std::shared_ptr<DataShare::DataShareResultSet> Query(Uri &uri, const DataSharePredicates &predicates, std::vector<std::string> &columns) | 查询数据 |
表 2 权限说明
模块 | 所需权限 |
---|---|
短彩信模块 | ohos.permission.READ_MESSAGES |
SIM卡模块 | ohos.permission.GET_TELEPHONY_STATE ohos.permission.SET_TELEPHONY_STATE |
网络运营商模块 | ohos.permission.GET_TELEPHONY_STATE ohos.permission.SET_TELEPHONY_STATE |
随卡框架模块 | ohos.permission.GET_TELEPHONY_STATE ohos.permission.SET_TELEPHONY_STATE |
表 3 Insert接口参数说明
参数 | 说明 |
---|---|
uri | 资源路径 |
value | 数据集合,字段对应当前操作的表结构字段 |
表 4 Delete接口参数说明
参数 | 说明 |
---|---|
uri | 资源路径 |
predicates | 删除条件 |
表 5 Update接口参数说明
参数 | 说明 |
---|---|
uri | 资源路径 |
predicates | 更新条件 |
value | 数据集合,字段对应当前操作的表结构字段 |
表 6 Query接口参数说明
参数 | 说明 |
---|---|
uri | 资源路径 |
predicates | 查询条件 |
columns | 查询返回的字段 |
以查询/插入/删除/更新短彩信数据为例,主要步骤和代码如下:
使用SystemAbilityManagerClient获得SystemAbilityManager对象。
使用saManager获得指定服务Id的IRemoteObject对象。
使用IRemoteObject创建DataShareHelper对象。
调用DataShareHelper::Query接口访问,并接收处理返回的数据。
创建DataShareHelper:
std::shared_ptr<DataShare::DataShareHelper> DataStorageGtest::CreateDataShareHelper(
int32_t systemAbilityId, std::string &uri)
{
//通过SystemAbilityManagerClient获得SystemAbilityManager
auto saManager = SystemAbilityManagerClient::GetInstance().GetSystemAbilityManager();
if (saManager == nullptr) {
DATA_STORAGE_LOGE("DataSimRdbHelper Get system ability mgr failed.");
return nullptr;
}
// 获得IRemoteObject
auto remoteObj = saManager->GetSystemAbility(systemAbilityId);
while (remoteObj == nullptr) {
DATA_STORAGE_LOGE("DataSimRdbHelper GetSystemAbility Service Failed.");
return nullptr;
}
// 创建DataShareHelper
return DataShare::DataShareHelper::Creator(remoteObj, uri);
}
查询短彩信信息:
std::shared_ptr<DataShare::DataShareResultSet> DataStorageGtest::SmsSelect(const std::shared_ptr<DataShare::DataShareHelper> &helper)
{
// 资源路径
Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
//查询返回的字段
std::vector<std::string> columns;
// 发送者号码
columns.push_back("sender_number");
// 消息标题
columns.push_back("msg_title");
// 消息内容
columns.push_back("msg_content");
// 查询谓词
DataShare::DataSharePredicates predicates;
// 调用DataShareHelper::Query接口查询
return helper->Query(uri, predicates, columns);
}
插入短彩信信息:
int SmsInsert(std::shared_ptr<DataShare::DataShareHelper> &helper)
{
Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
DataShare::DataShareValuesBucket value;
// 接收者号码
value.Put(SmsMmsInfo::RECEIVER_NUMBER, "138XXXXXXXX");
// 消息内容
value.Put(SmsMmsInfo::MSG_CONTENT, "ceshi");
value.Put(SmsMmsInfo::GROUP_ID, 1);
return helper->Insert(uri, value);
}
删除短彩信信息:
int SmsDelete(std::shared_ptr<DataShare::DataShareHelper> helper)
{
Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
DataShare::DataSharePredicates predicates;
// 删除MSG_ID为1的信息
predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
return helper->Delete(uri, predicates);
}
更新短彩信信息:
int SmsUpdate(std::shared_ptr<DataShare::DataShareHelper> helper)
{
Uri uri("datashare:///com.ohos.smsmmsability/sms_mms/sms_mms_info");
DataShare::DataShareValuesBucket values;
// 信息内容
values.Put(SmsMmsInfo::MSG_CONTENT, "hi ohos");
DataShare::DataSharePredicates predicates;
// 信息Id
predicates.EqualTo(SmsMmsInfo::MSG_ID, "1");
return helper->Update(uri, predicates, values);
}
telephony_data_storage
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。