diff options
Diffstat (limited to 'StoneIsland/platforms/android/src/com/pbakondy/Sim.java')
| -rw-r--r-- | StoneIsland/platforms/android/src/com/pbakondy/Sim.java | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/StoneIsland/platforms/android/src/com/pbakondy/Sim.java b/StoneIsland/platforms/android/src/com/pbakondy/Sim.java deleted file mode 100644 index df3542f7..00000000 --- a/StoneIsland/platforms/android/src/com/pbakondy/Sim.java +++ /dev/null @@ -1,264 +0,0 @@ -// 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"); - } - } -} |
