summaryrefslogtreecommitdiff
path: root/StoneIsland/platforms
diff options
context:
space:
mode:
authorJules Laplace <julescarbon@gmail.com>2017-11-05 20:24:49 +0100
committerJules Laplace <julescarbon@gmail.com>2017-11-05 20:24:49 +0100
commitf828ce6d0c308c2c5d67c71ee3141b015807fd62 (patch)
tree4f5a819afe988158902b907f4f7582448819a594 /StoneIsland/platforms
parent1f38892c1729572fa98801692dc20c60931d7377 (diff)
cordova-plugin-sim
Diffstat (limited to 'StoneIsland/platforms')
-rwxr-xr-xStoneIsland/platforms/android/AndroidManifest.xml1
-rwxr-xr-xStoneIsland/platforms/android/android.json30
-rw-r--r--StoneIsland/platforms/android/assets/www/cordova_plugins.js153
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js11
-rw-r--r--StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js8
-rwxr-xr-xStoneIsland/platforms/android/platform_www/cordova_plugins.js19
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js11
-rw-r--r--StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js8
-rw-r--r--StoneIsland/platforms/android/res/xml/config.xml3
-rw-r--r--StoneIsland/platforms/android/src/com/pbakondy/Sim.java264
-rw-r--r--StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist4
-rwxr-xr-xStoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj7
-rw-r--r--StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist2
-rw-r--r--StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstatebin41982 -> 40452 bytes
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.h9
-rw-r--r--StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.m55
-rwxr-xr-xStoneIsland/platforms/ios/Stone Island/config.xml3
-rw-r--r--StoneIsland/platforms/ios/frameworks.json2
-rw-r--r--StoneIsland/platforms/ios/ios.json18
-rw-r--r--StoneIsland/platforms/ios/platform_www/cordova_plugins.js11
-rw-r--r--StoneIsland/platforms/ios/platform_www/plugins/cordova-plugin-sim/www/sim.js8
-rw-r--r--StoneIsland/platforms/ios/www/cordova_plugins.js11
-rw-r--r--StoneIsland/platforms/ios/www/plugins/cordova-plugin-sim/www/sim.js8
23 files changed, 636 insertions, 10 deletions
diff --git a/StoneIsland/platforms/android/AndroidManifest.xml b/StoneIsland/platforms/android/AndroidManifest.xml
index 75322df7..59ddcea4 100755
--- a/StoneIsland/platforms/android/AndroidManifest.xml
+++ b/StoneIsland/platforms/android/AndroidManifest.xml
@@ -55,4 +55,5 @@
<uses-permission android:name="${applicationId}.permission.PushHandlerActivity" />
<permission android:name="${applicationId}.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<permission android:name="${applicationId}.permission.PushHandlerActivity" android:protectionLevel="signature" />
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
</manifest>
diff --git a/StoneIsland/platforms/android/android.json b/StoneIsland/platforms/android/android.json
index 3e69085c..5dc54401 100755
--- a/StoneIsland/platforms/android/android.json
+++ b/StoneIsland/platforms/android/android.json
@@ -55,6 +55,10 @@
{
"xml": "<feature name=\"PushNotification\"><param name=\"android-package\" value=\"com.adobe.phonegap.push.PushPlugin\" /></feature>",
"count": 1
+ },
+ {
+ "xml": "<feature name=\"Sim\"><param name=\"android-package\" value=\"com.pbakondy.Sim\" /></feature>",
+ "count": 1
}
]
}
@@ -146,6 +150,10 @@
{
"xml": "<uses-feature android:name=\"android.hardware.location.gps\" />",
"count": 1
+ },
+ {
+ "xml": "<uses-permission android:name=\"android.permission.READ_PHONE_STATE\" />",
+ "count": 1
}
],
"/manifest/application/activity": [
@@ -235,6 +243,9 @@
"phonegap-plugin-push": {
"SENDER_ID": "85075801930",
"PACKAGE_NAME": "us.okfoc.stoneisland"
+ },
+ "cordova-plugin-sim": {
+ "PACKAGE_NAME": "us.okfoc.stoneisland"
}
},
"dependent_plugins": {},
@@ -351,6 +362,22 @@
"clobbers": [
"PushNotification"
]
+ },
+ {
+ "id": "cordova-plugin-sim.Sim",
+ "file": "plugins/cordova-plugin-sim/www/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
+ },
+ {
+ "id": "cordova-plugin-sim.SimAndroid",
+ "file": "plugins/cordova-plugin-sim/www/android/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
}
],
"plugin_metadata": {
@@ -367,6 +394,7 @@
"cordova-plugin-statusbar": "2.2.3",
"cordova-plugin-app-name": "1.0.4",
"cordova-plugin-splashscreen": "4.0.3",
- "phonegap-plugin-push": "1.9.2"
+ "phonegap-plugin-push": "1.9.2",
+ "cordova-plugin-sim": "1.3.3"
}
} \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/cordova_plugins.js b/StoneIsland/platforms/android/assets/www/cordova_plugins.js
new file mode 100644
index 00000000..770bd946
--- /dev/null
+++ b/StoneIsland/platforms/android/assets/www/cordova_plugins.js
@@ -0,0 +1,153 @@
+cordova.define('cordova/plugin_list', function(require, exports, module) {
+module.exports = [
+ {
+ "file": "plugins/cordova-plugin-inappbrowser/www/inappbrowser.js",
+ "id": "cordova-plugin-inappbrowser.inappbrowser",
+ "pluginId": "cordova-plugin-inappbrowser",
+ "clobbers": [
+ "cordova.InAppBrowser.open",
+ "window.open"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-x-socialsharing/www/SocialSharing.js",
+ "id": "cordova-plugin-x-socialsharing.SocialSharing",
+ "pluginId": "cordova-plugin-x-socialsharing",
+ "clobbers": [
+ "window.plugins.socialsharing"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-customurlscheme/www/android/LaunchMyApp.js",
+ "id": "cordova-plugin-customurlscheme.LaunchMyApp",
+ "pluginId": "cordova-plugin-customurlscheme",
+ "clobbers": [
+ "window.plugins.launchmyapp"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-device/www/device.js",
+ "id": "cordova-plugin-device.device",
+ "pluginId": "cordova-plugin-device",
+ "clobbers": [
+ "device"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-network-information/www/network.js",
+ "id": "cordova-plugin-network-information.network",
+ "pluginId": "cordova-plugin-network-information",
+ "clobbers": [
+ "navigator.connection",
+ "navigator.network.connection"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-network-information/www/Connection.js",
+ "id": "cordova-plugin-network-information.Connection",
+ "pluginId": "cordova-plugin-network-information",
+ "clobbers": [
+ "Connection"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-dialogs/www/notification.js",
+ "id": "cordova-plugin-dialogs.notification",
+ "pluginId": "cordova-plugin-dialogs",
+ "merges": [
+ "navigator.notification"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-dialogs/www/android/notification.js",
+ "id": "cordova-plugin-dialogs.notification_android",
+ "pluginId": "cordova-plugin-dialogs",
+ "merges": [
+ "navigator.notification"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-geolocation/www/android/geolocation.js",
+ "id": "cordova-plugin-geolocation.geolocation",
+ "pluginId": "cordova-plugin-geolocation",
+ "clobbers": [
+ "navigator.geolocation"
+ ]
+ },
+ {
+ "file": "plugins/cordova-plugin-geolocation/www/PositionError.js",
+ "id": "cordova-plugin-geolocation.PositionError",
+ "pluginId": "cordova-plugin-geolocation",
+ "runs": true
+ },
+ {
+ "file": "plugins/ionic-plugin-keyboard/www/android/keyboard.js",
+ "id": "ionic-plugin-keyboard.keyboard",
+ "pluginId": "ionic-plugin-keyboard",
+ "clobbers": [
+ "cordova.plugins.Keyboard"
+ ],
+ "runs": true
+ },
+ {
+ "id": "cordova-plugin-statusbar.statusbar",
+ "file": "plugins/cordova-plugin-statusbar/www/statusbar.js",
+ "pluginId": "cordova-plugin-statusbar",
+ "clobbers": [
+ "window.StatusBar"
+ ]
+ },
+ {
+ "id": "cordova-plugin-splashscreen.SplashScreen",
+ "file": "plugins/cordova-plugin-splashscreen/www/splashscreen.js",
+ "pluginId": "cordova-plugin-splashscreen",
+ "clobbers": [
+ "navigator.splashscreen"
+ ]
+ },
+ {
+ "id": "phonegap-plugin-push.PushNotification",
+ "file": "plugins/phonegap-plugin-push/www/push.js",
+ "pluginId": "phonegap-plugin-push",
+ "clobbers": [
+ "PushNotification"
+ ]
+ },
+ {
+ "id": "cordova-plugin-sim.Sim",
+ "file": "plugins/cordova-plugin-sim/www/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
+ },
+ {
+ "id": "cordova-plugin-sim.SimAndroid",
+ "file": "plugins/cordova-plugin-sim/www/android/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
+ }
+];
+module.exports.metadata =
+// TOP OF METADATA
+{
+ "cordova-plugin-inappbrowser": "1.5.0",
+ "cordova-plugin-x-socialsharing": "5.1.3",
+ "cordova-plugin-customurlscheme": "4.2.0",
+ "cordova-plugin-whitelist": "1.3.0",
+ "cordova-plugin-device": "1.1.3",
+ "cordova-plugin-network-information": "1.3.0",
+ "cordova-plugin-dialogs": "1.3.0",
+ "cordova-plugin-compat": "1.1.0",
+ "cordova-plugin-geolocation": "2.4.0",
+ "ionic-plugin-keyboard": "2.2.1",
+ "cordova-plugin-statusbar": "2.2.3",
+ "cordova-plugin-app-name": "1.0.4",
+ "cordova-plugin-splashscreen": "4.0.3",
+ "phonegap-plugin-push": "1.9.2",
+ "cordova-plugin-sim": "1.3.3"
+};
+// BOTTOM OF METADATA
+}); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js
new file mode 100644
index 00000000..5813054f
--- /dev/null
+++ b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/android/sim.js
@@ -0,0 +1,11 @@
+cordova.define("cordova-plugin-sim.SimAndroid", function(require, exports, module) {
+module.exports = {
+ hasReadPermission: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'hasReadPermission', []);
+ },
+ requestReadPermission: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'requestReadPermission', []);
+ }
+};
+
+});
diff --git a/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js
new file mode 100644
index 00000000..ccc52e54
--- /dev/null
+++ b/StoneIsland/platforms/android/assets/www/plugins/cordova-plugin-sim/www/sim.js
@@ -0,0 +1,8 @@
+cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) {
+module.exports = {
+ getSimInfo: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []);
+ }
+};
+
+});
diff --git a/StoneIsland/platforms/android/platform_www/cordova_plugins.js b/StoneIsland/platforms/android/platform_www/cordova_plugins.js
index 8f70abd6..770bd946 100755
--- a/StoneIsland/platforms/android/platform_www/cordova_plugins.js
+++ b/StoneIsland/platforms/android/platform_www/cordova_plugins.js
@@ -112,6 +112,22 @@ module.exports = [
"clobbers": [
"PushNotification"
]
+ },
+ {
+ "id": "cordova-plugin-sim.Sim",
+ "file": "plugins/cordova-plugin-sim/www/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
+ },
+ {
+ "id": "cordova-plugin-sim.SimAndroid",
+ "file": "plugins/cordova-plugin-sim/www/android/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
}
];
module.exports.metadata =
@@ -130,7 +146,8 @@ module.exports.metadata =
"cordova-plugin-statusbar": "2.2.3",
"cordova-plugin-app-name": "1.0.4",
"cordova-plugin-splashscreen": "4.0.3",
- "phonegap-plugin-push": "1.9.2"
+ "phonegap-plugin-push": "1.9.2",
+ "cordova-plugin-sim": "1.3.3"
};
// BOTTOM OF METADATA
}); \ No newline at end of file
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js
new file mode 100644
index 00000000..5813054f
--- /dev/null
+++ b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/android/sim.js
@@ -0,0 +1,11 @@
+cordova.define("cordova-plugin-sim.SimAndroid", function(require, exports, module) {
+module.exports = {
+ hasReadPermission: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'hasReadPermission', []);
+ },
+ requestReadPermission: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'requestReadPermission', []);
+ }
+};
+
+});
diff --git a/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js
new file mode 100644
index 00000000..ccc52e54
--- /dev/null
+++ b/StoneIsland/platforms/android/platform_www/plugins/cordova-plugin-sim/www/sim.js
@@ -0,0 +1,8 @@
+cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) {
+module.exports = {
+ getSimInfo: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []);
+ }
+};
+
+});
diff --git a/StoneIsland/platforms/android/res/xml/config.xml b/StoneIsland/platforms/android/res/xml/config.xml
index 9f4cb684..43132082 100644
--- a/StoneIsland/platforms/android/res/xml/config.xml
+++ b/StoneIsland/platforms/android/res/xml/config.xml
@@ -74,4 +74,7 @@
<feature name="PushNotification">
<param name="android-package" value="com.adobe.phonegap.push.PushPlugin" />
</feature>
+ <feature name="Sim">
+ <param name="android-package" value="com.pbakondy.Sim" />
+ </feature>
</widget>
diff --git a/StoneIsland/platforms/android/src/com/pbakondy/Sim.java b/StoneIsland/platforms/android/src/com/pbakondy/Sim.java
new file mode 100644
index 00000000..df3542f7
--- /dev/null
+++ b/StoneIsland/platforms/android/src/com/pbakondy/Sim.java
@@ -0,0 +1,264 @@
+// 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
+// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/TelephonyManager.java
+
+// permissions
+// http://developer.android.com/training/permissions/requesting.html
+
+// Multiple SIM Card Support
+// https://developer.android.com/about/versions/android-5.1.html
+
+// class SubscriptionManager
+// https://developer.android.com/reference/android/telephony/SubscriptionManager.html
+// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/SubscriptionManager.java
+
+// class SubscriptionInfo
+// https://developer.android.com/reference/android/telephony/SubscriptionInfo.html
+// https://github.com/android/platform_frameworks_base/blob/master/telephony/java/android/telephony/SubscriptionInfo.java
+
+// Cordova Permissions API
+// https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html#android-permissions
+
+package com.pbakondy;
+
+import org.apache.cordova.CallbackContext;
+import org.apache.cordova.CordovaPlugin;
+import org.apache.cordova.PluginResult;
+import org.apache.cordova.LOG;
+
+import org.json.JSONObject;
+import org.json.JSONArray;
+import org.json.JSONException;
+
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Build;
+import android.Manifest;
+
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
+
+import java.util.List;
+
+public class Sim extends CordovaPlugin {
+ private static final String LOG_TAG = "CordovaPluginSim";
+
+
+ private static final String GET_SIM_INFO = "getSimInfo";
+ private static final String HAS_READ_PERMISSION = "hasReadPermission";
+ private static final String REQUEST_READ_PERMISSION = "requestReadPermission";
+
+ private CallbackContext callback;
+
+ @SuppressLint("HardwareIds")
+ @Override
+ public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
+ callback = callbackContext;
+
+ if (GET_SIM_INFO.equals(action)) {
+ Context context = this.cordova.getActivity().getApplicationContext();
+
+ TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+
+ // dual SIM detection with SubscriptionManager API
+ // requires API 22
+ // requires permission READ_PHONE_STATE
+ JSONArray sims = null;
+ Integer phoneCount = null;
+ Integer activeSubscriptionInfoCount = null;
+ Integer activeSubscriptionInfoCountMax = null;
+
+ try {
+ // TelephonyManager.getPhoneCount() requires API 23
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
+ phoneCount = manager.getPhoneCount();
+ }
+
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP_MR1) {
+
+ if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) {
+
+ SubscriptionManager subscriptionManager = (SubscriptionManager) context.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+ activeSubscriptionInfoCount = subscriptionManager.getActiveSubscriptionInfoCount();
+ activeSubscriptionInfoCountMax = subscriptionManager.getActiveSubscriptionInfoCountMax();
+
+ sims = new JSONArray();
+
+ List<SubscriptionInfo> subscriptionInfos = subscriptionManager.getActiveSubscriptionInfoList();
+ for (SubscriptionInfo subscriptionInfo : subscriptionInfos) {
+
+ CharSequence carrierName = subscriptionInfo.getCarrierName();
+ String countryIso = subscriptionInfo.getCountryIso();
+ int dataRoaming = subscriptionInfo.getDataRoaming(); // 1 is enabled ; 0 is disabled
+ CharSequence displayName = subscriptionInfo.getDisplayName();
+ String iccId = subscriptionInfo.getIccId();
+ int mcc = subscriptionInfo.getMcc();
+ int mnc = subscriptionInfo.getMnc();
+ String number = subscriptionInfo.getNumber();
+ int simSlotIndex = subscriptionInfo.getSimSlotIndex();
+ int subscriptionId = subscriptionInfo.getSubscriptionId();
+
+ boolean networkRoaming = subscriptionManager.isNetworkRoaming(simSlotIndex);
+
+ String deviceId = null;
+ // TelephonyManager.getDeviceId(slotId) requires API 23
+ if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.M) {
+ deviceId = manager.getDeviceId(simSlotIndex);
+ }
+
+ JSONObject simData = new JSONObject();
+
+ simData.put("carrierName", carrierName.toString());
+ simData.put("displayName", displayName.toString());
+ simData.put("countryCode", countryIso);
+ simData.put("mcc", mcc);
+ simData.put("mnc", mnc);
+ simData.put("isNetworkRoaming", networkRoaming);
+ simData.put("isDataRoaming", (dataRoaming == 1));
+ simData.put("simSlotIndex", simSlotIndex);
+ simData.put("phoneNumber", number);
+ if (deviceId != null) {
+ simData.put("deviceId", deviceId);
+ }
+ simData.put("simSerialNumber", iccId);
+ simData.put("subscriptionId", subscriptionId);
+
+ sims.put(simData);
+
+ }
+ }
+ }
+ } catch (JSONException e) {
+ e.printStackTrace();
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+
+ String phoneNumber = null;
+ String countryCode = manager.getSimCountryIso();
+ String simOperator = manager.getSimOperator();
+ String carrierName = manager.getSimOperatorName();
+
+ String deviceId = null;
+ String deviceSoftwareVersion = null;
+ String simSerialNumber = null;
+ String subscriberId = null;
+
+ int callState = manager.getCallState();
+ int dataActivity = manager.getDataActivity();
+ int networkType = manager.getNetworkType();
+ int phoneType = manager.getPhoneType();
+ int simState = manager.getSimState();
+
+ boolean isNetworkRoaming = manager.isNetworkRoaming();
+
+ if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) {
+ phoneNumber = manager.getLine1Number();
+ deviceId = manager.getDeviceId();
+ deviceSoftwareVersion = manager.getDeviceSoftwareVersion();
+ simSerialNumber = manager.getSimSerialNumber();
+ subscriberId = manager.getSubscriberId();
+ }
+
+ 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("callState", callState);
+ result.put("dataActivity", dataActivity);
+ result.put("networkType", networkType);
+ result.put("phoneType", phoneType);
+ result.put("simState", simState);
+
+ result.put("isNetworkRoaming", isNetworkRoaming);
+
+ if (phoneCount != null) {
+ result.put("phoneCount", (int)phoneCount);
+ }
+ if (activeSubscriptionInfoCount != null) {
+ result.put("activeSubscriptionInfoCount", (int)activeSubscriptionInfoCount);
+ }
+ if (activeSubscriptionInfoCountMax != null) {
+ result.put("activeSubscriptionInfoCountMax", (int)activeSubscriptionInfoCountMax);
+ }
+
+ if (simPermissionGranted(Manifest.permission.READ_PHONE_STATE)) {
+ result.put("phoneNumber", phoneNumber);
+ result.put("deviceId", deviceId);
+ result.put("deviceSoftwareVersion", deviceSoftwareVersion);
+ result.put("simSerialNumber", simSerialNumber);
+ result.put("subscriberId", subscriberId);
+ }
+
+ if (sims != null && sims.length() != 0) {
+ result.put("cards", sims);
+ }
+
+ callbackContext.success(result);
+
+ return true;
+ } else if (HAS_READ_PERMISSION.equals(action)) {
+ hasReadPermission();
+ return true;
+ } else if (REQUEST_READ_PERMISSION.equals(action)) {
+ requestReadPermission();
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ private void hasReadPermission() {
+ this.callback.sendPluginResult(new PluginResult(PluginResult.Status.OK,
+ simPermissionGranted(Manifest.permission.READ_PHONE_STATE)));
+ }
+
+ private void requestReadPermission() {
+ requestPermission(Manifest.permission.READ_PHONE_STATE);
+ }
+
+ private boolean simPermissionGranted(String type) {
+ if (Build.VERSION.SDK_INT < 23) {
+ return true;
+ }
+ return cordova.hasPermission(type);
+ }
+
+ private void requestPermission(String type) {
+ LOG.i(LOG_TAG, "requestPermission");
+ if (!simPermissionGranted(type)) {
+ cordova.requestPermission(this, 12345, type);
+ } else {
+ this.callback.success();
+ }
+ }
+
+ @Override
+ public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException
+ {
+ if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
+ this.callback.success();
+ } else {
+ this.callback.error("Permission denied");
+ }
+ }
+}
diff --git a/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist b/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist
index 4bc8d36e..54b0db05 100644
--- a/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/StoneIsland/platforms/ios/CordovaLib/CordovaLib.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -7,12 +7,12 @@
<key>Cordova.xcscheme</key>
<dict>
<key>orderHint</key>
- <integer>3</integer>
+ <integer>4</integer>
</dict>
<key>CordovaLib.xcscheme</key>
<dict>
<key>orderHint</key>
- <integer>2</integer>
+ <integer>3</integer>
</dict>
</dict>
</dict>
diff --git a/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj b/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj
index d3f7acd2..a637a063 100755
--- a/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj
+++ b/StoneIsland/platforms/ios/Stone Island.xcodeproj/project.pbxproj
@@ -5,7 +5,6 @@
};
objectVersion = 46;
objects = {
-
/* Begin PBXBuildFile section */
0207DA581B56EA530066E2B4 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0207DA571B56EA530066E2B4 /* Images.xcassets */; };
0A9D8E7D77FD4C27B4DD2393 /* CDVNotification.m in Sources */ = {isa = PBXBuildFile; fileRef = 2923E526CC8E4009B2DA8D64 /* CDVNotification.m */; };
@@ -39,6 +38,7 @@
CE8687FA42EA49F2936AA5E4 /* CDVConnection.m in Sources */ = {isa = PBXBuildFile; fileRef = 669C0562CA3E4A2E9E6898D6 /* CDVConnection.m */; };
EE95056671E844C9921729AE /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 65AAB41973FB4238B7AD4D85 /* AudioToolbox.framework */; settings = {ATTRIBUTES = (Weak, ); }; };
EFF00C22294FE756DED28A81 /* libPods-Stone Island.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 78CB957A0B40BA339C669D53 /* libPods-Stone Island.a */; };
+ 52A4EAACA1F34D6EBEED78A3 /* Sim.m in Sources */ = {isa = PBXBuildFile; fileRef = DCFA1E58FE794CA6BE2A4834 /* Sim.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -125,6 +125,8 @@
EDA99B42F1E147FCA8824E6E /* CoreLocation.framework */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 9; includeInIndex = 0; lastKnownFileType = wrapper.framework; name = CoreLocation.framework; path = System/Library/Frameworks/CoreLocation.framework; sourceTree = SDKROOT; };
F840E1F0165FE0F500CFE078 /* config.xml */ = {isa = PBXFileReference; lastKnownFileType = text.xml; name = config.xml; path = "Stone Island/config.xml"; sourceTree = "<group>"; };
F9D019AC51834C309501EAF5 /* CDVReachability.h */ = {isa = PBXFileReference; explicitFileType = undefined; fileEncoding = 4; includeInIndex = 0; lastKnownFileType = sourcecode.c.h; name = CDVReachability.h; path = "cordova-plugin-network-information/CDVReachability.h"; sourceTree = "<group>"; };
+ DCFA1E58FE794CA6BE2A4834 /* Sim.m */ = {isa = PBXFileReference; name = "Sim.m"; path = "cordova-plugin-sim/Sim.m"; sourceTree = "<group>"; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; explicitFileType = undefined; includeInIndex = 0; };
+ 3782AD713ACA4C098142F2DA /* Sim.h */ = {isa = PBXFileReference; name = "Sim.h"; path = "cordova-plugin-sim/Sim.h"; sourceTree = "<group>"; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; explicitFileType = undefined; includeInIndex = 0; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -286,6 +288,8 @@
C85567A8F35F40C99D7AE117 /* PushPlugin.m */,
CEF393D5749347098BED6D82 /* AppDelegate+notification.h */,
4B1911CDF0454542977ECE35 /* PushPlugin.h */,
+ DCFA1E58FE794CA6BE2A4834 /* Sim.m */,
+ 3782AD713ACA4C098142F2DA /* Sim.h */,
);
name = Plugins;
path = "Stone Island/Plugins";
@@ -478,6 +482,7 @@
54D2276159A643C0842544DC /* IonicKeyboard.m in Sources */,
A842514FAE364263A91C9664 /* AppDelegate+notification.m in Sources */,
17B84E5E1F2E4D699B41A450 /* PushPlugin.m in Sources */,
+ 52A4EAACA1F34D6EBEED78A3 /* Sim.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist b/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist
index d744b66e..371cb20d 100644
--- a/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist
+++ b/StoneIsland/platforms/ios/Stone Island.xcodeproj/xcuserdata/user.xcuserdatad/xcschemes/xcschememanagement.plist
@@ -7,7 +7,7 @@
<key>Stone Island.xcscheme</key>
<dict>
<key>orderHint</key>
- <integer>3</integer>
+ <integer>2</integer>
</dict>
</dict>
</dict>
diff --git a/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate b/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate
index 55bb151c..f43c8bf2 100644
--- a/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate
+++ b/StoneIsland/platforms/ios/Stone Island.xcworkspace/xcuserdata/user.xcuserdatad/UserInterfaceState.xcuserstate
Binary files differ
diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.h b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.h
new file mode 100644
index 00000000..d14ff264
--- /dev/null
+++ b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.h
@@ -0,0 +1,9 @@
+#import <Cordova/CDV.h>
+#import <CoreTelephony/CTCarrier.h>
+#import <CoreTelephony/CTTelephonyNetworkInfo.h>
+
+@interface Sim : CDVPlugin
+
+- (void)getSimInfo:(CDVInvokedUrlCommand*)command;
+
+@end
diff --git a/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.m b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.m
new file mode 100644
index 00000000..49d70eac
--- /dev/null
+++ b/StoneIsland/platforms/ios/Stone Island/Plugins/cordova-plugin-sim/Sim.m
@@ -0,0 +1,55 @@
+// 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/reference/coretelephony/ctcarrier?language=objc
+
+#import "Sim.h"
+#import <Cordova/CDV.h>
+#import <Foundation/Foundation.h>
+#import <CoreTelephony/CTCarrier.h>
+#import <CoreTelephony/CTTelephonyNetworkInfo.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
diff --git a/StoneIsland/platforms/ios/Stone Island/config.xml b/StoneIsland/platforms/ios/Stone Island/config.xml
index 81ddacaf..c7a3a817 100755
--- a/StoneIsland/platforms/ios/Stone Island/config.xml
+++ b/StoneIsland/platforms/ios/Stone Island/config.xml
@@ -109,4 +109,7 @@
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="ShowSplashScreenSpinner" value="false" />
<preference name="AutoHideSplashScreen" value="true" />
+ <feature name="Sim">
+ <param name="ios-package" value="Sim" />
+ </feature>
</widget>
diff --git a/StoneIsland/platforms/ios/frameworks.json b/StoneIsland/platforms/ios/frameworks.json
index 8c96a67b..0a971c69 100644
--- a/StoneIsland/platforms/ios/frameworks.json
+++ b/StoneIsland/platforms/ios/frameworks.json
@@ -2,7 +2,7 @@
"AudioToolbox.framework": 1,
"CoreLocation.framework": 1,
"SystemConfiguration.framework": 1,
- "CoreTelephony.framework": 1,
+ "CoreTelephony.framework": 2,
"Social.framework": 1,
"MessageUI.framework": 1,
"AddressBook.framework": 1,
diff --git a/StoneIsland/platforms/ios/ios.json b/StoneIsland/platforms/ios/ios.json
index a801018b..e7fc56d1 100644
--- a/StoneIsland/platforms/ios/ios.json
+++ b/StoneIsland/platforms/ios/ios.json
@@ -101,6 +101,10 @@
{
"xml": "<feature name=\"PushNotification\"><param name=\"ios-package\" value=\"PushPlugin\" /></feature>",
"count": 1
+ },
+ {
+ "xml": "<feature name=\"Sim\"><param name=\"ios-package\" value=\"Sim\" /></feature>",
+ "count": 1
}
]
}
@@ -172,6 +176,9 @@
"phonegap-plugin-push": {
"SENDER_ID": "85075801930",
"PACKAGE_NAME": "us.okfoc.stoneisland"
+ },
+ "cordova-plugin-sim": {
+ "PACKAGE_NAME": "us.okfoc.stoneisland"
}
},
"dependent_plugins": {},
@@ -298,6 +305,14 @@
"clobbers": [
"PushNotification"
]
+ },
+ {
+ "id": "cordova-plugin-sim.Sim",
+ "file": "plugins/cordova-plugin-sim/www/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
}
],
"plugin_metadata": {
@@ -314,6 +329,7 @@
"cordova-plugin-whitelist": "1.3.0",
"cordova-plugin-x-socialsharing": "5.1.3",
"ionic-plugin-keyboard": "2.2.1",
- "phonegap-plugin-push": "1.9.2"
+ "phonegap-plugin-push": "1.9.2",
+ "cordova-plugin-sim": "1.3.3"
}
} \ No newline at end of file
diff --git a/StoneIsland/platforms/ios/platform_www/cordova_plugins.js b/StoneIsland/platforms/ios/platform_www/cordova_plugins.js
index e6ad8b23..32af05ac 100644
--- a/StoneIsland/platforms/ios/platform_www/cordova_plugins.js
+++ b/StoneIsland/platforms/ios/platform_www/cordova_plugins.js
@@ -122,6 +122,14 @@ module.exports = [
"clobbers": [
"PushNotification"
]
+ },
+ {
+ "id": "cordova-plugin-sim.Sim",
+ "file": "plugins/cordova-plugin-sim/www/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
}
];
module.exports.metadata =
@@ -140,7 +148,8 @@ module.exports.metadata =
"cordova-plugin-whitelist": "1.3.0",
"cordova-plugin-x-socialsharing": "5.1.3",
"ionic-plugin-keyboard": "2.2.1",
- "phonegap-plugin-push": "1.9.2"
+ "phonegap-plugin-push": "1.9.2",
+ "cordova-plugin-sim": "1.3.3"
};
// BOTTOM OF METADATA
}); \ No newline at end of file
diff --git a/StoneIsland/platforms/ios/platform_www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/ios/platform_www/plugins/cordova-plugin-sim/www/sim.js
new file mode 100644
index 00000000..ccc52e54
--- /dev/null
+++ b/StoneIsland/platforms/ios/platform_www/plugins/cordova-plugin-sim/www/sim.js
@@ -0,0 +1,8 @@
+cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) {
+module.exports = {
+ getSimInfo: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []);
+ }
+};
+
+});
diff --git a/StoneIsland/platforms/ios/www/cordova_plugins.js b/StoneIsland/platforms/ios/www/cordova_plugins.js
index e6ad8b23..32af05ac 100644
--- a/StoneIsland/platforms/ios/www/cordova_plugins.js
+++ b/StoneIsland/platforms/ios/www/cordova_plugins.js
@@ -122,6 +122,14 @@ module.exports = [
"clobbers": [
"PushNotification"
]
+ },
+ {
+ "id": "cordova-plugin-sim.Sim",
+ "file": "plugins/cordova-plugin-sim/www/sim.js",
+ "pluginId": "cordova-plugin-sim",
+ "merges": [
+ "window.plugins.sim"
+ ]
}
];
module.exports.metadata =
@@ -140,7 +148,8 @@ module.exports.metadata =
"cordova-plugin-whitelist": "1.3.0",
"cordova-plugin-x-socialsharing": "5.1.3",
"ionic-plugin-keyboard": "2.2.1",
- "phonegap-plugin-push": "1.9.2"
+ "phonegap-plugin-push": "1.9.2",
+ "cordova-plugin-sim": "1.3.3"
};
// BOTTOM OF METADATA
}); \ No newline at end of file
diff --git a/StoneIsland/platforms/ios/www/plugins/cordova-plugin-sim/www/sim.js b/StoneIsland/platforms/ios/www/plugins/cordova-plugin-sim/www/sim.js
new file mode 100644
index 00000000..ccc52e54
--- /dev/null
+++ b/StoneIsland/platforms/ios/www/plugins/cordova-plugin-sim/www/sim.js
@@ -0,0 +1,8 @@
+cordova.define("cordova-plugin-sim.Sim", function(require, exports, module) {
+module.exports = {
+ getSimInfo: function(successCallback, errorCallback) {
+ cordova.exec(successCallback, errorCallback, 'Sim', 'getSimInfo', []);
+ }
+};
+
+});