SIM

This is a API to get data from the SIM card like the carrier name, mcc, mnc and country code and other system dependent additional info.

Usage
SIM.getSimInfo()
    .then((res) => {
        console.log(res);            
    })
    .catch((err) => {
        console.log(err);
    });
window.SIM.getSimInfo()
    .then((res) => {
        console.log(res);
    })
    .catch((err) => {
        console.log(err);
    });
window.SIM.getSimInfo()
    .then((res) => {
        console.log(res);
    })
    .catch((err) => {
        console.log(err);
    });
(<any>window).SIM.getSimInfo()
    .then((res) => {
        console.log(res);
    })
    .catch((err) => {
        console.log(err);
    });
window.SIM.getSimInfo()
    .then((res) => {
        console.log(res);
    })
    .catch((err) => {
        console.log(err);
    });

Classes


getSimInfo

getSimInfo(): Promise<GetInfoResults>

Get data from the SIM card.

This method needs PHONE Permission to get some information. To get all the information, use the requestReadPermission method.


RETURN
returns: Promise <GetInfoResults>

hasReadPermission

hasReadPermission(): Promise<boolean>

Check if user has PHONE Permission.


RETURN
returns: Promise <boolean>

requestReadPermission

requestReadPermission(): Promise<any>

Prompt the user to give PHONE Permission.


RETURN
returns: Promise <any>

Interfaces

GetInfoResults
interface GetInfoResults {
    // Service Provider Name
    carrierName : string;
    // ISO country code equivalent for the SIM provider's country code
    countryCode : string;
    MCC (mobile country code) of the provider of the SIM
    mcc: string;
    MNC (mobile network code) of the provider of the SIM
    mnc: string;
    // call state (cellular) on the device
    callState: CallState;
    // type of activity on a data connection (cellular)
    dataActivity: DataActivity;
    // the NETWORK_TYPE_xxxx for current data connection
    networkType: NetworkType;
    // device phone type. This indicates the type of radio used to transmit voice calls
    phoneType: PhoneType;
    // the state of the device SIM card
    simState: SIMState;
    // true if the device is considered roaming on the current network, for GSM purposes
    isNetworkRoaming: boolean;
    // the number of phones available. Returns 0 if none of voice, sms, data is not supported. Returns 1 for Single standby mode (Single SIM functionality). Returns 2 for Dual standby mode (Dual SIM functionality)
    phoneCount: int;
    // [PHONE Permission] the current number of active subscriptions
    activeSubscriptionInfoCount: int;
    // [PHONE Permission] the maximum number of active subscriptions
    activeSubscriptionInfoCountMax: int;
    // [PHONE Permission] - phone number string for line 1, for example, the MSISDN for a GSM phone 1
    phoneNumber: string;
    // [PHONE Permission] the unique device ID, for example, the IMEI for GSM and the MEID or ESN for CDMA phones
    deviceId: string;
    // [PHONE Permission] the software version number for the device, for example, the IMEI/SV for GSM phones
    deviceSoftwareVersion: string;
    // [PHONE Permission] the serial number of the SIM, if applicable
    simSerialNumber: string;
    // [PHONE Permission] the unique subscriber ID, for example, the IMSI for a GSM phone
    subscriberId: string;
    // [PHONE Permission] List of SIM cards
    cards: Cards array;
}

This API needs PHONE Permission for getting the following values:

  • phoneNumber
  • deviceId
  • deviceSoftwareVersion
  • simSerialNumber
  • subscriberId
  • activeSubscriptionInfoCount
  • activeSubscriptionInfoCountMax
  • cards

cards
interface Cards {
    // The name displayed to the user that identifies Subscription provider name
    carrierName: string;
    // The name displayed to the user that identifies this subscription
    displayName: string;
    // The ISO country code
    countryCode: string;
    // MCC (mobile country code) of the provider of the SIM
    mcc: string;
    // MNC (mobile network code) of the provider of the SIM
    mnc: string;
    // Returns true if the device is considered roaming on the current network for a subscription
    isNetworkRoaming: boolean;
    // The data roaming state for this subscription
    isDataRoaming: boolean;
    // The slot index of this Subscription's SIM card
    simSlotIndex: int;
    // The number of this subscription
    phoneNumber: string;
    // The unique device ID of a subscription, for example, the IMEI for GSM and the MEID for CDMA phones
    deviceId: string;
    // ICC ID
    simSerialNumber: string;
    // Subscription Identifier, this is a device unique number
    subscriptionId: string
}

Enumeration

Call State

CallState = {
    CALL_STATE_IDLE: 0 // No activity
    CALL_STATE_RINGING: 1 // Ringing. A new call arrived and is ringing or waiting. In the latter case, another call is already active.
    CALL_STATE_OFFHOOK: 2 // Off-hook. At least one call exists that is dialing, active, or on hold, and no calls are ringing or waiting.
}

Data Activity

DataActivity = {
    DATA_ACTIVITY_NONE: 0 // No traffic
    DATA_ACTIVITY_IN: 1 // Currently receiving IP PPP traffic
    DATA_ACTIVITY_OUT: 2 // Currently sending IP PPP traffic
    DATA_ACTIVITY_INOUT: 3 // Currently both sending and receiving IP PPP traffic
    DATA_ACTIVITY_DORMANT: 4 // Data connection is active, but physical link is down
}

Network Type

NetworkType = {
    NETWORK_TYPE_UNKNOWN: 0	// unknown
    NETWORK_TYPE_GPRS: 1 // GPRS
    NETWORK_TYPE_EDGE: 2 // EDGE
    NETWORK_TYPE_UMTS: 3 // UMTS
    NETWORK_TYPE_CDMA: 4 // CDMA: Either IS95A or IS95B
    NETWORK_TYPE_EVDO_0: 5 // EVDO revision 0
    NETWORK_TYPE_EVDO_A: 6 // EVDO revision A
    NETWORK_TYPE_1xRTT: 7 // 1xRTT
    NETWORK_TYPE_HSDPA: 8 // HSDPA
    NETWORK_TYPE_HSUPA: 9 // HSUPA
    NETWORK_TYPE_HSPA: 10 // HSPA
    NETWORK_TYPE_IDEN: 11 // iDen
    NETWORK_TYPE_EVDO_B: 12	// EVDO revision B
    NETWORK_TYPE_LTE: 13 // LTE
    NETWORK_TYPE_EHRPD: 14 // eHRPD
    NETWORK_TYPE_HSPAP: 15 // HSPA+
    NETWORK_TYPE_GSM: 16 // GSM
    NETWORK_TYPE_TD_SCDMA: 17 // TD-SCDMA
    NETWORK_TYPE_IWLAN: 18 // IWLAN
}

Phone Type

PhoneType = {
    PHONE_TYPE_NONE: 0 // none
    PHONE_TYPE_GSM: 1 // GSM
    PHONE_TYPE_CDMA: 2 // CDMA
    PHONE_TYPE_SIP: 3 // SIP
}

simState

SIMState = {
    SIM_STATE_UNKNOWN: 0 // Unknown. Signifies that the SIM is in transition between states.
    SIM_STATE_ABSENT: 1 // No SIM card is available in the device
    SIM_STATE_PIN_REQUIRED: 2 // Locked: requires the user's SIM PIN to unlock
    SIM_STATE_PUK_REQUIRED: 3 // Locked: requires the user's SIM PUK to unlock
    SIM_STATE_NETWORK_LOCKED: 4 // Locked: requires a network PIN to unlock
    SIM_STATE_READY: 5 // Ready
}