PNN 分为long和short,在任何平台都是一样的,基于SIM的EF设计。
_updateCardInfos 同名代码
Launcher APP: SimCardStatus 卡状态
KaiOS 4.0 运营商名称会显示在主界面(锁屏中央),数据源可以在如下接口打印。
- 代码路径:gaia/apps/launcher/src/simCardStatus.js
- 设备路径:system/b2g/webapps/launcher
- Note:application里面是找不到simCardStatus.js文件的,逻辑全部都打包到了application\dist\app.bundle.js 中,而且通过代码全搜的时候不能直接找到,只能找到同名不带函数括号的。
- key: "_updateCardInfos" -- 搜索函数的方法
// KaiOS source code
// gaia/apps/launcher/src/simCardStatus.js
/* global emitter */
import React from 'react';
import BaseComponent from 'base-component';
import Service from 'service';
import '../style/scss/simcard.scss';
export default class SimCardStatus extends BaseComponent {
name = 'SimCardStatus';
simCardsName = {};
_updateCardInfos() {
const conns = navigator.b2g.mobileConnections;
if (!conns) {
return;
}
let cardInfos = [];
const simSlots = window.SIMSlotManager.getSlots();
Array.from(conns).forEach((conn, index) => {
const isAbsent = !conn.iccId;
// Raw signal level from MozMobileConnections is -1~4
// we normalize it to 0~5 for data-icon convenient
let signalLevel = 0;
if ((!isAbsent && conn.voice.connected) ||
(conn.data && 'registered' === conn.data.state)) {
if (conn.signalStrength) {
signalLevel = conn.signalStrength.level + 1;
} else {
signalLevel = Math.ceil(conn.voice.relSignalStrength / 20);
}
}
let stateL10nId;
let carrierName;
let data = conn.data;
let network;
let voice_data = conn.voice ? conn.voice : conn.data;
let ims = conn.imsHandler;
let isVoWifi = !!ims && ('voice-over-wifi' === ims.capability ||
'video-over-wifi' === ims.capability);
if (conn.voice && conn.voice.connected) {
network = conn.voice.network;
} else if (data && 'registered' === data.state) {
network = conn.data.network;
}
if (isAbsent) {
stateL10nId = 'noSimCard';
} else if (simSlots[index].getCardState() !== 'ready') {
stateL10nId = 'lockedSim';
} else if ('searching' === voice_data.state) {
stateL10nId = 'searching';
} else if (network || isVoWifi) {
let iccid = conn.iccId;
let iccObj = navigator.b2g.iccManager.getIccById(iccid);