同步操作将从 OpenHarmony/telephony_core_service 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
核心服务模块主要功能是初始化SIM卡服务、搜网服务和RIL管理,以及获取RIL Adapter服务。
通过注册回调服务,实现与RIL Adapter进行通信;通过发布订阅,来实现与各功能模块的通信。
上图示中核心服务关联的业务服务包括SIM卡服务、搜网服务、RIL通信管理。
/base/telphony/core_service
├── figures # Readme资源文件
├── frameworks # 框架层目录
│ ├── js
│ └── native
├── interfaces # 接口目录
│ ├── innerkits # 部件间的内部接口
│ └── kits # 对应用提供的接口(例如JS接口)
├── sa_profile # 核心服务的启动文件目录
├── services # 核心服务实现代码目录
│ ├── etc # 核心服务的驱动脚本目录
│ ├── include
│ ├── network_search # 搜网服务代码目录
│ ├── sim # SIM卡服务代码目录
│ ├── src
│ └── tel_ril # 核心服务与RIL Adapter通信代码目录
├── test # 单元测试相关代码
│ └── unittest
└── utils
├── common # 核心服务日志打印目录
├── log
└── preferences
核心服务模块需要提供SIM卡,搜网相关模块的接口。
接口名称 | 接口描述 | 所需权限 |
---|---|---|
function getSimState(slotId: number, callback: AsyncCallback<SimState>): void; | 获取指定卡槽的SIM卡状态 | 无 |
function getSimGid1(slotId: number, callback: AsyncCallback<string>): void; | 获取指定卡槽SIM卡的GID1(Group Identifier Level 1) | ohos.permission.GET_TELEPHONY_STATE |
function getSimIccId(slotId: number, callback: AsyncCallback<string>): void; | 获取指定卡槽SIM卡的ICCID(Integrate Circuit Card Identity) | ohos.permission.GET_TELEPHONY_STATE |
function getISOCountryCodeForSim(slotId: number, callback: AsyncCallback<string>): void; | 获取指定卡槽SIM卡的ISO国家码 | 无 |
function getSimOperatorNumeric(slotId: number, callback: AsyncCallback<string>): void; | 获取指定卡槽SIM卡的归属PLMN(Public Land Mobile Network)号 | 无 |
function getSimSpn(slotId: number, callback: AsyncCallback<string>): void; | 获取指定卡槽SIM卡的运营商SPN(Service Provider Name) | 无 |
function getDefaultVoiceSlotId(callback: AsyncCallback<number>): void; | 获取语音业务的默认卡卡槽 | 无 |
function isSimActive(slotId: number, callback: AsyncCallback<boolean>): void | 检查指定卡槽的SIM卡是否激活 | 无 |
function hasSimCard(slotId: number, callback: AsyncCallback<boolean>): void | 检查SIM卡是否插入指定卡槽 | 无 |
function getSimTelephoneNumber(slotId: number, callback: AsyncCallback<string>): void | 获取指定卡槽SIM卡的MSISDN(Mobile Station Integrated Services Digital Network) | ohos.permission.GET_TELEPHONY_STATE |
function getVoiceMailIdentifier(slotId: number, callback: AsyncCallback<string>): void | 获取指定卡槽SIM卡语音信箱的身份标识 | ohos.permission.GET_TELEPHONY_STATE |
function getVoiceMailNumber(slotId: number, callback: AsyncCallback<string>): void | 获取指定卡槽SIM卡的语音邮箱号码 | ohos.permission.GET_TELEPHONY_STATE |
function getCardType(slotId: number, callback: AsyncCallback<CardType>): void | 获取指定卡槽SIM卡的类型 | 无 |
function hasOperatorPrivileges(slotId: number, callback: AsyncCallback<boolean>): void | 检查应用(调用者)是否已被授予运营商权限 | 无 |
function getMaxSimCount(): number | 获取设备上可同时使用的最大SIM卡数,即最大SIM卡槽数。 | 无 |
完整的JS API说明以及实例代码请参考:SIM卡管理。
接口名称 | 接口描述 | 所需权限 |
---|---|---|
function getRadioTech(slotId: number, callback: AsyncCallback<{psRadioTech: RadioTechnology, csRadioTech: RadioTechnology}>): void; | 获取指定卡槽的当前接入技术 | ohos.permission.GET_NETWORK_INFO |
function getSignalInformation(slotId: number, callback: AsyncCallback<Array<SignalInformation>>): void; | 获取指定卡槽的信号列表 | 无 |
function getNetworkState(slotId: number, callback: AsyncCallback<NetworkState>): void; | 获取指定卡槽的网络状态 | ohos.permission.GET_NETWORK_INFO |
function getISOCountryCodeForNetwork(slotId: number, callback: AsyncCallback<string>): void; | 获取指定卡槽的网络国家码 | 无 |
function getNetworkSearchInformation(slotId: number, callback: AsyncCallback<NetworkSearchResult>): void; | 获取指定卡槽的手动搜网结果 | ohos.permission.GET_TELEPHONY_STATE |
function getNetworkSelectionMode(slotId: number, callback: AsyncCallback<NetworkSelectionMode>): void; | 获取指定卡槽的选网模式 | 无 |
function setNetworkSelectionMode(options: NetworkSelectionModeOptions, callback: AsyncCallback<void>): void; | 设置指定卡槽的选网模式 | ohos.permission.SET_TELEPHONY_STATE |
function isRadioOn(callback: AsyncCallback<boolean>): void; | 判断主卡Radio是否打开 | ohos.permission.GET_NETWORK_INFO |
function isRadioOn(slotId: number, callback: AsyncCallback<boolean>): void; | 判断指定卡槽位的Radio是否打开 | ohos.permission.GET_NETWORK_INFO |
function turnOnRadio(callback: AsyncCallback<void>): void; | 开启主卡Radio | ohos.permission.SET_TELEPHONY_STATE |
function turnOnRadio(slotId: number, callback: AsyncCallback<void>): void; | 开启指定卡槽位的Radio | ohos.permission.SET_TELEPHONY_STATE |
function turnOffRadio(callback: AsyncCallback<void>): void; | 关闭主卡Radio | ohos.permission.SET_TELEPHONY_STATE |
function turnOffRadio(slotId: number, callback: AsyncCallback<void>): void; | 关闭指定卡槽位的Radio | ohos.permission.SET_TELEPHONY_STATE |
function getOperatorName(slotId: number, callback: AsyncCallback<string>): void; | 获取指定卡槽的运营商名称 | 无 |
function setPreferredNetwork(slotId: number, networkMode: PreferredNetworkMode, callback: AsyncCallback<void>): void; | 设置指定卡槽的优选网络模式 | 无 |
function getPreferredNetwork(slotId: number, callback: AsyncCallback<PreferredNetworkMode>): void; | 获取指定卡槽的优选网络模式 | 无 |
function getCellInformation(slotId: number, callback: AsyncCallback<Array<CellInformation>>) | 获取小区信息列表 | ohos.permission.LOCATION |
function sendUpdateCellLocationRequest(callback: AsyncCallback<void>) | 请求小区位置 | ohos.permission.LOCATION |
function getIMEI(slotId: number, callback: AsyncCallback<string>) | 获取Imei | ohos.permission.GET_TELEPHONY_STATE |
function getMEID(slotId: number, callback: AsyncCallback<string>) | 获取Meid | ohos.permission.GET_TELEPHONY_STATE |
function getUniqueDeviceId(slotId: number, callback: AsyncCallback<string>) | 获取设备唯一标识码 | ohos.permission.GET_TELEPHONY_STATE |
function getNrOptionMode(slotId: number, callback: AsyncCallback<NrOptionMode>) | 获取5G模式 | ohos.permission.GET_TELEPHONY_STATE |
function isNrSupported: boolean; | 是否支持5g网络 | 无 |
完整的JS API说明以及实例代码请参考:网络搜索。
说明:
RIL管理不对外暴露接口,由电话服务子系统其他各个模块调用。
获取网络状态接口调用流程及示例代码:
指定查询的slotId,若不指定默认查询主卡信息。
可以通过callback或者Promise的方式调用getNetworkState方法,返回网络状态信息。
该接口为异步接口,相关执行结果会从callback中返回。
import radio from "@ohos.telephony.radio";
// 参数赋值
let slotId = 0;
// 调用接口【callback方式】
radio.getNetworkState(slotId, (err, value) => {
if (err) {
// 接口调用失败,err非空
console.error(`failed to getNetworkState because ${err.message}`);
return;
}
// 接口调用成功,err为空
console.log(`success to getNetworkState: ${value}`);
});
// 调用接口【Promise方式】
let promise = radio.getNetworkState(slotId);
promise.then((value) => {
// 接口调用成功,此处可以实现成功场景分支代码。
console.log(`success to getNetworkState: ${value}`);
}).catch((err) => {
// 接口调用失败,此处可以实现失败场景分支代码。
console.error(`failed to getNetworkState because ${err.message}`);
});
查询指定SIM卡的状态接口调用流程及示例代码:
指定查询的slotId。
可以通过callback或者Promise的方式调用getSimState方法,返回卡状态信息。
该接口为异步接口,相关执行结果会从callback中返回。
import sim from "@ohos.telephony.sim";
// 参数赋值
let slotId = 0;
// 调用接口【callback方式】
sim.getSimState(slotId, (err, value) => {
if (err) {
// 接口调用失败,err非空
console.error(`failed to getSimState because ${err.message}`);
return;
}
// 接口调用成功,err为空
console.log(`success to getSimState: ${value}`);
});
// 调用接口【Promise方式】
let promise = sim.getSimState(slotId);
promise.then((value) => {
// 接口调用成功,此处可以实现成功场景分支代码。
console.log(`success to getSimState: ${value}`);
}).catch((err) => {
// 接口调用失败,此处可以实现失败场景分支代码。
console.error(`failed to getSimState because ${err.message}`);
});
telephony_core_service
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。