ns-sim-info
使用 NativeScript 获取 SIM 卡信息
npm i --save ns-sim-info

ns-sim-info

此插件是从 nativescript-sim-info 分支出来的。此插件使用 @nativescript/plugin-seed。插件在 Android 上不会请求电话号码,以减少请求的权限。manager.getLine1Number 在 Android 上需要 SMS 和电话号码权限,这些权限在 Play 商店中很难授予。iOS 不提供电话号码。

ns plugin add ns-sim-info

使用方法

    import { SimInfo } from "ns-sim-info";

load(): void {
const simInfo = new SimInfo();
simInfo.getData()
.then((simData) => {
console.log(simData)
}).catch((error) => {
console.error(error);
});
}

Android 输出

单卡

[
{
"isoCountryCode": "at",
"simOperator": "23XXX",
"carrierName": "A1",
"callState": null,
"dataActivity": null,
"phoneType": 1,
"simState": 5,
"isNetworkRoaming": true,
"mcc": 232,
"mnc": 1,
"phoneNumber": "",
"deviceSoftwareVersion": "01",
"simSerialNumber": "894301561923869XXXX",
"subscriberId": "23201163022XXXX",
"isDefaultSim": true,
"networkType": 13,
"deviceImei": "35404611160XXXX",
"deviceMeid": "",
"subscriptionId": 1
}
]

双卡

[
{
"isoCountryCode": "at",
"simOperator": "23XXX",
"carrierName": "spusu",
"callState": null,
"dataActivity": 4,
"phoneType": 1,
"simState": 5,
"isNetworkRoaming": true,
"mcc": 232,
"mnc": 17,
"phoneNumber": "",
"deviceSoftwareVersion": "00",
"simSerialNumber": "894317008000176XXXX",
"subscriberId": "23217004025XXXX",
"isDefaultSim": true,
"networkType": 13,
"deviceImei": "86760103133XXXX",
"deviceMeid": "9900111506XXXX",
"subscriptionId": 1
},
{
"isoCountryCode": "at",
"carrierName": "A1",
"isNetworkRoaming": true,
"phoneNumber": "",
"mcc": 232,
"mnc": 1,
"subscriptionId": 4,
"simSerialNumber": "894301561520280XXXX",
"isDefaultSim": false
}
]
可能出现的错误

该插件将根据 Android 版本请求更多或更少的权限项。如果用户拒绝其中任何一项权限,则返回一个被拒绝的承诺对象。

{
"android.permission.READ_PHONE_STATE": false,
}

iOS 输出

单卡

[
{
"mnc": "232",
"isoCountryCode": "at",
"carrierName": "A1",
"allowsVOIP": true,
"mcc": "1"
}
]

API

属性 平台 Android 版本 iOS 版本 类型 描述
isoCountryCode common 1 1 字符串 返回 SIM 提供商国家代码的 ISO-3166 国家代码等效值。
carrierName common 1 1 字符串 返回 SIM 提供商的 MCC+MNC(移动国家代码+移动网络代码)。5 或 6 位十进制数字。
mcc common 1 1 字符串 - 数字 - null 返回移动国家代码 (MCC)。
mnc common 1 1 字符串 - 数字 - null 返回移动网络代码 (MNC)。
simOperator android 1 - 字符串 返回服务提供商名称 (SPN)。
callState android 1 - 数字 - null 返回设备上所有电话的状态。
dataActivity android 1 - 数字 - null 返回一个常数,表示数据连接(蜂窝)上的活动类型。
phoneType android 1 - 数字 - null 返回一个常数,表示设备电话类型。
simState android 1 - 数字 - null 返回一个常数,表示默认 SIM 卡的状态。
isNetworkRoaming android 1 - 布尔值 - null 如果设备被视为当前网络上的漫游,则返回 true,对于 GSM 而言。
phoneNumber android - - 字符串 返回线路 1 的电话号码字符串,例如,GSM 电话的 MSISDN。如果不可用,则返回 null 或 ""。
deviceSoftwareVersion android 1 - 字符串 返回设备的软件版本号,例如,GSM 电话的 IMEI/SV。
simSerialNumber android 1 - 字符串 如果适用,返回 SIM 的序列号。
subscriberId android 1 - 字符串 返回唯一的订阅者 ID,例如,GSM 电话的 IMSI。
subscriptionId android 5.1 (Api: 22) - 数字 - null 返回订阅。
simSerialNumber android 5.1 (Api: 22) - 字符串 返回 SIM 唯一序列号 (ICCID)。
networkType android 7 (Api: 24) - 数字 - null 返回一个常数,表示设备用于数据传输的无线电技术(网络类型)。
deviceImei android 8 (Api: 26) - 字符串 返回 GSM 的 IMEI。
isDefaultSim android - - 布尔值 - null 如果 SIM 被视为默认的,则返回 true。
allowsVOIP ios - 1 布尔值 - null 表示运营商是否允许在其网络上进行 VoIP 电话。

Android

双卡支持

从 API 级别 22 开始,即 LOLLIPOP_MR1 或 Android 5.1,支持双卡。我想指出,Android 认为默认订阅(TelephonyManager)和订阅(SubscriptionManager)之间的信息属性数量存在差异。

iOS

双卡支持

从 iOS 12 开始,Apple 支持双卡。默认和副卡可用的信息属性相同。

电话号码

在任何情况下,苹果都不允许访问电话号码。有关此主题的更多信息,请参阅指南中的2.5.2点。

测试手机

  • 小米9
  • iPhone 5s

致谢

nativescript-sim-info

许可协议

Apache许可证第2.0版