This repository has been archived by the owner on May 23, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 100
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
8 changed files
with
468 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
The MIT License (MIT) | ||
|
||
Copyright (c) 2015 Peter Bakondy | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
# cordova-plugin-sim | ||
|
||
This is a cordova plugin to get data from the SIM card like the carrier name, mcc, mnc and country code and other system dependent additional info. | ||
|
||
|
||
## Installation | ||
|
||
``` | ||
cordova plugin add com.pbakondy.sim | ||
``` | ||
|
||
|
||
## Supported Platforms | ||
|
||
- Android | ||
- iOS | ||
- Windows Phone 7 and 8 | ||
|
||
|
||
## Usage | ||
|
||
``` | ||
document.addEventListener("deviceready", onDeviceReady, false); | ||
function onDeviceReady() { | ||
window.plugins.sim.getSimInfo(successCallback, errorCallback); | ||
} | ||
``` | ||
|
||
The plugin returns a JSON object. Return values: | ||
|
||
* `carrierName`: String - the Service Provider Name (SPN) | ||
* `countryCode`: String - the ISO country code equivalent for the SIM provider's country code | ||
* `mcc`: String - the MCC (mobile country code) of the provider of the SIM | ||
* `mnc`: String - the MNC (mobile network code) of the provider of the SIM | ||
|
||
Field carrierName may remain empty, dependent on the mobile provider. | ||
|
||
On Windows Phone access to countryCode, MCC and MNC is not made provided (returns empty string). | ||
|
||
You can extract country and carrier data from MCC and MNC codes, read further on [Wikipedia](http://en.wikipedia.org/wiki/Mobile_country_code) and [ITU-T](http://www.itu.int/pub/T-SP-E.212B-2014). | ||
|
||
|
||
## Android Quirks | ||
|
||
Additional return values: | ||
|
||
* `phoneNumber`: String - phone number string for line 1, for example, the [MSISDN](http://en.wikipedia.org/wiki/MSISDN) for a GSM phone | ||
* `callState`: Number - the call state (cellular) on the device | ||
* `dataActivity`: Number - the type of activity on a data connection (cellular) | ||
* `networkType`: Number - the NETWORK_TYPE_xxxx for current data connection | ||
* `phoneType`: Number - the device phone type. This indicates the type of radio used to transmit voice calls | ||
* `simState`: Number - the state of the device SIM card | ||
|
||
Notice: the content of phoneNumber is unreliable (see [this](http://stackoverflow.com/questions/7922734/getting-reliable-msisdn-from-android-phone-voicemailnumber-line1number) and [this](http://stackoverflow.com/questions/25861064/retrieving-line1-number-from-telephonymanager-in-android) article). | ||
|
||
|
||
### List of Call State Codes and Meanings | ||
|
||
| Code | Constant | Meaning | ||
|-----:|:------------------------------|-------- | ||
| 0 | `CALL_STATE_IDLE` | No activity | ||
| 1 | `CALL_STATE_RINGING` | Ringing. A new call arrived and is ringing or waiting. In the latter case, another call is already active. | ||
| 2 | `CALL_STATE_OFFHOOK` | Off-hook. At least one call exists that is dialing, active, or on hold, and no calls are ringing or waiting. | ||
|
||
|
||
### List of Data Activity Codes and Meanings | ||
|
||
| Code | Constant | Meaning | ||
|-----:|:------------------------------|-------- | ||
| 0 | `DATA_ACTIVITY_NONE` | No traffic. | ||
| 1 | `DATA_ACTIVITY_IN` | Currently receiving IP PPP traffic. | ||
| 2 | `DATA_ACTIVITY_OUT` | Currently sending IP PPP traffic. | ||
| 3 | `DATA_ACTIVITY_INOUT` | Currently both sending and receiving IP PPP traffic. | ||
| 4 | `DATA_ACTIVITY_DORMANT` | Data connection is active, but physical link is down | ||
|
||
|
||
### List of Network Type Codes and Meanings | ||
|
||
| Code | Constant | Meaning | ||
|-----:|:------------------------------|-------- | ||
| 0 | `NETWORK_TYPE_UNKNOWN` | unknown | ||
| 1 | `NETWORK_TYPE_GPRS` | GPRS | ||
| 2 | `NETWORK_TYPE_EDGE` | EDGE | ||
| 3 | `NETWORK_TYPE_UMTS` | UMTS | ||
| 4 | `NETWORK_TYPE_CDMA` | CDMA: Either IS95A or IS95B | ||
| 5 | `NETWORK_TYPE_EVDO_0` | EVDO revision 0 | ||
| 6 | `NETWORK_TYPE_EVDO_A` | EVDO revision A | ||
| 7 | `NETWORK_TYPE_1xRTT` | 1xRTT | ||
| 8 | `NETWORK_TYPE_HSDPA` | HSDPA | ||
| 9 | `NETWORK_TYPE_HSUPA` | HSUPA | ||
| 10 | `NETWORK_TYPE_HSPA` | HSPA | ||
| 11 | `NETWORK_TYPE_IDEN` | iDen | ||
| 12 | `NETWORK_TYPE_EVDO_B` | EVDO revision B | ||
| 13 | `NETWORK_TYPE_LTE` | LTE | ||
| 14 | `NETWORK_TYPE_EHRPD` | eHRPD | ||
| 15 | `NETWORK_TYPE_HSPAP` | HSPA+ | ||
|
||
|
||
### List of Phone Type Codes and Meanings | ||
|
||
| Code | Constant | Meaning | ||
|-----:|:------------------------------|-------- | ||
| 0 | `PHONE_TYPE_NONE` | none | ||
| 1 | `PHONE_TYPE_GSM` | GSM | ||
| 2 | `PHONE_TYPE_CDMA` | CDMA | ||
| 3 | `PHONE_TYPE_SIP` | SIP | ||
|
||
|
||
### List of SIM State Codes and Meanings | ||
|
||
| Code | Constant | Meaning | ||
|-----:|:------------------------------|-------- | ||
| 0 | `SIM_STATE_UNKNOWN` | Unknown. Signifies that the SIM is in transition between states. For example, when the user inputs the SIM pin under PIN_REQUIRED state, a query for sim status returns this state before turning to SIM_STATE_READY. | ||
| 1 | `SIM_STATE_ABSENT` | No SIM card is available in the device | ||
| 2 | `SIM_STATE_PIN_REQUIRED` | Locked: requires the user's SIM PIN to unlock | ||
| 3 | `SIM_STATE_PUK_REQUIRED` | Locked: requires the user's SIM PUK to unlock | ||
| 4 | `SIM_STATE_NETWORK_LOCKED` | Locked: requries a network PIN to unlock | ||
| 5 | `SIM_STATE_READY` | Ready | ||
|
||
|
||
## iOS Quirks | ||
|
||
Additional return value: | ||
|
||
* `allowsVOIP`: Boolean - indicates if the carrier allows VoIP calls to be made on its network | ||
|
||
|
||
## Windows Phone Quirks | ||
|
||
Additional return values: | ||
|
||
* `isCellularDataEnabled`: Boolean - indicates whether the network is cellular data enabled | ||
* `isCellularDataRoamingEnabled`: Boolean - indicates whether the network allows data roaming | ||
* `IsNetworkAvailable`: Boolean - indicates whether the network is available | ||
* `isWiFiEnabled`: Boolean - indicates whether the network is Wi-Fi enabled | ||
|
||
|
||
## Author | ||
|
||
#### Peter Bakondy | ||
|
||
- https://github.com/pbakondy | ||
|
||
|
||
## LICENSE | ||
|
||
cordova-plugin-sim is licensed under the MIT Open Source license. For more information, see the LICENSE file in this repository. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,79 @@ | ||
<?xml version="1.0" encoding="UTF-8"?> | ||
<plugin xmlns="http://apache.org/cordova/ns/plugins/1.0" | ||
xmlns:android="http://schemas.android.com/apk/res/android" | ||
id="com.pbakondy.sim" | ||
version="1.0.0"> | ||
<name>SIM</name> | ||
<description>A plugin to get the device's SIM data (carrier name, mcc mnc, country code, telephonenumber, etc)</description> | ||
<license>MIT</license> | ||
<keywords>cordova,sim,carrier,mcc,mnc,telephonenumber</keywords> | ||
|
||
<engines> | ||
<engine name="cordova" version=">=3.0.0"/> | ||
</engines> | ||
|
||
<js-module src="www/sim.js" name="Sim"> | ||
<clobbers target="window.plugins.sim" /> | ||
</js-module> | ||
|
||
<!-- android --> | ||
<platform name="android"> | ||
<config-file target="res/xml/config.xml" parent="/*"> | ||
<feature name="Sim"> | ||
<param name="android-package" value="com.pbakondy.Sim"/> | ||
</feature> | ||
</config-file> | ||
|
||
<!-- for method getLine1Number() --> | ||
<config-file target="AndroidManifest.xml" parent="/*"> | ||
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> | ||
</config-file> | ||
|
||
<source-file src="src/android/com/pbakondy/Sim.java" target-dir="src/com/pbakondy" /> | ||
</platform> | ||
|
||
<!-- ios --> | ||
<platform name="ios"> | ||
<config-file target="config.xml" parent="/*"> | ||
<feature name="Sim"> | ||
<param name="ios-package" value="Sim" /> | ||
</feature> | ||
</config-file> | ||
|
||
<header-file src="src/ios/Sim.h"/> | ||
<source-file src="src/ios/Sim.m"/> | ||
|
||
<framework src="CoreTelephony.framework"/> | ||
</platform> | ||
|
||
<!-- wp7 --> | ||
<platform name="wp7"> | ||
<config-file target="config.xml" parent="/*"> | ||
<feature name="Sim"> | ||
<param name="wp-package" value="Sim"/> | ||
</feature> | ||
</config-file> | ||
|
||
<config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities"> | ||
<Capability Name="ID_CAP_NETWORKING" /> | ||
</config-file> | ||
|
||
<source-file src="src/wp/Sim.cs" /> | ||
</platform> | ||
|
||
<!-- wp8 --> | ||
<platform name="wp8"> | ||
<config-file target="config.xml" parent="/*"> | ||
<feature name="Sim"> | ||
<param name="wp-package" value="Sim"/> | ||
</feature> | ||
</config-file> | ||
|
||
<config-file target="Properties/WMAppManifest.xml" parent="/Deployment/App/Capabilities"> | ||
<Capability Name="ID_CAP_NETWORKING" /> | ||
</config-file> | ||
|
||
<source-file src="src/wp/Sim.cs" /> | ||
</platform> | ||
|
||
</plugin> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,72 @@ | ||
// MCC and MNC codes on Wikipedia | ||
// http://en.wikipedia.org/wiki/Mobile_country_code | ||
|
||
// Mobile Network Codes (MNC) for the international identification plan for public networks and subscriptions | ||
// http://www.itu.int/pub/T-SP-E.212B-2014 | ||
|
||
// class TelephonyManager | ||
// http://developer.android.com/reference/android/telephony/TelephonyManager.html | ||
|
||
package com.pbakondy; | ||
|
||
import android.app.Activity; | ||
import org.apache.cordova.CallbackContext; | ||
import org.apache.cordova.CordovaPlugin; | ||
import org.json.JSONObject; | ||
import org.json.JSONArray; | ||
import org.json.JSONException; | ||
|
||
import android.content.Context; | ||
import android.telephony.TelephonyManager; | ||
|
||
public class Sim extends CordovaPlugin { | ||
|
||
@Override | ||
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException { | ||
if (action.equals("getSimInfo")) { | ||
Context context = this.cordova.getActivity().getApplicationContext(); | ||
|
||
TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); | ||
|
||
String phoneNumber = manager.getLine1Number(); | ||
String countryCode = manager.getSimCountryIso(); | ||
String simOperator = manager.getSimOperator(); | ||
String carrierName = manager.getSimOperatorName(); | ||
|
||
int callState = manager.getCallState(); | ||
int dataActivity = manager.getDataActivity(); | ||
int networkType = manager.getNetworkType(); | ||
int phoneType = manager.getPhoneType(); | ||
int simState = manager.getSimState(); | ||
|
||
String mcc = ""; | ||
String mnc = ""; | ||
|
||
if (simOperator.length() >= 3) { | ||
mcc = simOperator.substring(0, 3); | ||
mnc = simOperator.substring(3); | ||
} | ||
|
||
|
||
JSONObject result = new JSONObject(); | ||
|
||
result.put("carrierName", carrierName); | ||
result.put("countryCode", countryCode); | ||
result.put("mcc", mcc); | ||
result.put("mnc", mnc); | ||
result.put("phoneNumber", phoneNumber); | ||
|
||
result.put("callState", callState); | ||
result.put("dataActivity", dataActivity); | ||
result.put("networkType", networkType); | ||
result.put("phoneType", phoneType); | ||
result.put("simState", simState); | ||
|
||
callbackContext.success(result); | ||
|
||
return true; | ||
} else { | ||
return false; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
#import <Cordova/CDV.h> | ||
#import <CoreTelephony/CTCarrier.h> | ||
#import <CoreTelephony/CTTelephonyNetworkInfo.h> | ||
|
||
@interface Sim : CDVPlugin | ||
|
||
- (void)getSimInfo:(CDVInvokedUrlCommand*)command; | ||
|
||
@end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
// MCC and MNC codes on Wikipedia | ||
// http://en.wikipedia.org/wiki/Mobile_country_code | ||
|
||
// Mobile Network Codes (MNC) for the international identification plan for public networks and subscriptions | ||
// http://www.itu.int/pub/T-SP-E.212B-2014 | ||
|
||
// class CTCarrier | ||
// https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Reference/CTCarrier/index.html | ||
|
||
#import "Sim.h" | ||
#import <Cordova/CDV.h> | ||
#import <Foundation/Foundation.h> | ||
|
||
@implementation Sim | ||
|
||
- (void)getSimInfo:(CDVInvokedUrlCommand*)command | ||
{ | ||
CTTelephonyNetworkInfo *netinfo = [[CTTelephonyNetworkInfo alloc] init]; | ||
CTCarrier *carrier = [netinfo subscriberCellularProvider]; | ||
|
||
BOOL allowsVOIPResult = [carrier allowsVOIP]; | ||
NSString *carrierNameResult = [carrier carrierName]; | ||
NSString *carrierCountryResult = [carrier isoCountryCode]; | ||
NSString *carrierCodeResult = [carrier mobileCountryCode]; | ||
NSString *carrierNetworkResult = [carrier mobileNetworkCode]; | ||
|
||
if (!carrierNameResult) { | ||
carrierNameResult = @""; | ||
} | ||
if (!carrierCountryResult) { | ||
carrierCountryResult = @""; | ||
} | ||
if (!carrierCodeResult) { | ||
carrierCodeResult = @""; | ||
} | ||
if (!carrierNetworkResult) { | ||
carrierNetworkResult = @""; | ||
} | ||
|
||
NSDictionary *simData = [NSDictionary dictionaryWithObjectsAndKeys: | ||
@(allowsVOIPResult), @"allowsVOIP", | ||
carrierNameResult, @"carrierName", | ||
carrierCountryResult, @"countryCode", | ||
carrierCodeResult, @"mcc", | ||
carrierNetworkResult, @"mnc", | ||
nil]; | ||
|
||
CDVPluginResult *pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsDictionary:simData]; | ||
|
||
[self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId]; | ||
} | ||
|
||
@end |
Oops, something went wrong.