From afa12d6b8978bbf86a158aa41cd740005e375176 Mon Sep 17 00:00:00 2001 From: markgrin Date: Fri, 27 Sep 2019 14:53:37 +0300 Subject: [PATCH 1/4] Realtime get iccid method --- README.md | 11 ++++++++ .../sigrlami/rnsimdata/RNSimDataModule.java | 25 ++++++++++++++++++- index.js | 23 +++++++++++++++++ 3 files changed, 58 insertions(+), 1 deletion(-) create mode 100644 index.js diff --git a/README.md b/README.md index ac53bf8..07439af 100644 --- a/README.md +++ b/README.md @@ -49,6 +49,17 @@ RNSimData.getCountryCode() NOTE: React Native "Modules", when having only constants, work with getters, and the result of `getSimInfo()` is undefined, you need to access the properties to get any info +### Realtime methods +These methods query SimInfo and callback with result. +``` +RNSimData.getRealtimeIccid(iccids => { + if (!iccids) + console.log('get iccids call failed'); + for (i in iccids) + console.log(iccids[i]); +}) +``` + ### Caveats Might crash if tries to use in a phone without any SIM cards. diff --git a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java index f4ee019..6d5bfbe 100644 --- a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java +++ b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java @@ -3,6 +3,8 @@ import java.util.HashMap; import java.util.Map; import java.util.List; +import java.util.LinkedList; +import java.util.ArrayList; import android.content.Context; import android.telephony.TelephonyManager; @@ -13,6 +15,7 @@ import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.Callback; +import com.facebook.react.bridge.WritableNativeArray; public class RNSimDataModule extends ReactContextBaseJavaModule { @@ -28,6 +31,26 @@ public String getName() { return "RNSimDataModule"; } + @ReactMethod + public void getRealtimeIccid(Callback callback) { + try { + TelephonyManager telManager = (TelephonyManager) this.reactContext.getSystemService(Context.TELEPHONY_SERVICE); + WritableNativeArray result = new WritableNativeArray(); + + SubscriptionManager manager = (SubscriptionManager) this.reactContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); + List subscriptionInfos = manager.getActiveSubscriptionInfoList(); + for (SubscriptionInfo subInfo : subscriptionInfos) { + String iccId = subInfo.getIccId(); + result.pushString(iccId); + } + callback.invoke(result); + } catch (Exception e) { + e.printStackTrace(); + callback.invoke(new String("")); + } + } + + @Override public Map getConstants() { @@ -75,4 +98,4 @@ public Map getConstants() { return constants; } -} \ No newline at end of file +} diff --git a/index.js b/index.js new file mode 100644 index 0000000..fa688b3 --- /dev/null +++ b/index.js @@ -0,0 +1,23 @@ +/// +'use strict'; +Object.defineProperty(exports, "__esModule", { value: true }); +const react_native_1 = require("react-native"); +const RNSimData = react_native_1.NativeModules.RNSimDataModule; +exports.default = { + getSimInfo() { + return RNSimData; + }, + getTelephoneNumber() { + return RNSimData.phoneNumber0; + }, + getRealtimeIccids(callback) { + RNSimData.getRealtimeIccid(callback); + }, + getCarrierName() { + return RNSimData.carrierName0; + }, + getCountryCode() { + return RNSimData.countryCode0; + } +}; +//# sourceMappingURL=index.js.map From 5ac961152fb099d7f64d4343f80e6c18006b8ae5 Mon Sep 17 00:00:00 2001 From: markgrin Date: Fri, 1 Nov 2019 19:15:49 +0300 Subject: [PATCH 2/4] get Mcc method --- .../sigrlami/rnsimdata/RNSimDataModule.java | 19 +++++++++++++++++++ index.js | 3 +++ 2 files changed, 22 insertions(+) diff --git a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java index 6d5bfbe..70f8fca 100644 --- a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java +++ b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java @@ -31,6 +31,25 @@ public String getName() { return "RNSimDataModule"; } + @ReactMethod + public void getRealtimeMcc(Callback callback) { + try { + TelephonyManager telManager = (TelephonyManager) this.reactContext.getSystemService(Context.TELEPHONY_SERVICE); + WritableNativeArray result = new WritableNativeArray(); + + SubscriptionManager manager = (SubscriptionManager) this.reactContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); + List subscriptionInfos = manager.getActiveSubscriptionInfoList(); + for (SubscriptionInfo subInfo : subscriptionInfos) { + int mcc = subInfo.getMcc(); + result.pushString(mcc); + } + callback.invoke(result); + } catch (Exception e) { + e.printStackTrace(); + callback.invoke(new String("")); + } + } + @ReactMethod public void getRealtimeIccid(Callback callback) { try { diff --git a/index.js b/index.js index fa688b3..f07b76c 100644 --- a/index.js +++ b/index.js @@ -10,6 +10,9 @@ exports.default = { getTelephoneNumber() { return RNSimData.phoneNumber0; }, + getRealtimeMcc(callback) { + RNSimData.getRealtimeMcc(callback); + }, getRealtimeIccids(callback) { RNSimData.getRealtimeIccid(callback); }, From ede72f7b329587c727363f7fbe1781e4ae944a16 Mon Sep 17 00:00:00 2001 From: markgrin Date: Fri, 1 Nov 2019 19:20:06 +0300 Subject: [PATCH 3/4] bugfix --- .../src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java index 70f8fca..5c8ad26 100644 --- a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java +++ b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java @@ -41,7 +41,7 @@ public void getRealtimeMcc(Callback callback) { List subscriptionInfos = manager.getActiveSubscriptionInfoList(); for (SubscriptionInfo subInfo : subscriptionInfos) { int mcc = subInfo.getMcc(); - result.pushString(mcc); + result.pushString(Integer.toString(mcc)); } callback.invoke(result); } catch (Exception e) { From c0579edf93c6d9f6193696cab5438725dafb401e Mon Sep 17 00:00:00 2001 From: markgrin Date: Fri, 22 Nov 2019 21:19:26 +0300 Subject: [PATCH 4/4] Data is now generated by geRealtimeSimInfo --- .../sigrlami/rnsimdata/RNSimDataModule.java | 36 +++++++++---------- index.js | 7 ++-- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java index 5c8ad26..f2cc86a 100644 --- a/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java +++ b/android/src/main/java/eu/sigrlami/rnsimdata/RNSimDataModule.java @@ -16,6 +16,7 @@ import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.Callback; import com.facebook.react.bridge.WritableNativeArray; +import com.facebook.react.bridge.WritableNativeMap; public class RNSimDataModule extends ReactContextBaseJavaModule { @@ -32,7 +33,7 @@ public String getName() { } @ReactMethod - public void getRealtimeMcc(Callback callback) { + public void getRealtimeInfo(Callback callback) { try { TelephonyManager telManager = (TelephonyManager) this.reactContext.getSystemService(Context.TELEPHONY_SERVICE); WritableNativeArray result = new WritableNativeArray(); @@ -40,27 +41,23 @@ public void getRealtimeMcc(Callback callback) { SubscriptionManager manager = (SubscriptionManager) this.reactContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); List subscriptionInfos = manager.getActiveSubscriptionInfoList(); for (SubscriptionInfo subInfo : subscriptionInfos) { + String iccId = subInfo.getIccId(); int mcc = subInfo.getMcc(); - result.pushString(Integer.toString(mcc)); - } - callback.invoke(result); - } catch (Exception e) { - e.printStackTrace(); - callback.invoke(new String("")); - } - } + int mnc = subInfo.getMnc(); + int simSlotIndex = subInfo.getSimSlotIndex(); + CharSequence carrierName = subInfo.getCarrierName(); + String networkCountry = telManager.getNetworkCountryIso(); - @ReactMethod - public void getRealtimeIccid(Callback callback) { - try { - TelephonyManager telManager = (TelephonyManager) this.reactContext.getSystemService(Context.TELEPHONY_SERVICE); - WritableNativeArray result = new WritableNativeArray(); + WritableNativeMap map = new WritableNativeMap(); - SubscriptionManager manager = (SubscriptionManager) this.reactContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); - List subscriptionInfos = manager.getActiveSubscriptionInfoList(); - for (SubscriptionInfo subInfo : subscriptionInfos) { - String iccId = subInfo.getIccId(); - result.pushString(iccId); + map.putString("iccid", iccId); + map.putString("mcc", Integer.toString(mcc)); + map.putString("mnc", Integer.toString(mnc)); + map.putString("carrierName", carrierName.toString()); + map.putString("simSlotIndex", Integer.toString(simSlotIndex)); + map.putString("networkCountry", networkCountry); + + result.pushMap(map); } callback.invoke(result); } catch (Exception e) { @@ -69,7 +66,6 @@ public void getRealtimeIccid(Callback callback) { } } - @Override public Map getConstants() { diff --git a/index.js b/index.js index f07b76c..546cd91 100644 --- a/index.js +++ b/index.js @@ -10,11 +10,8 @@ exports.default = { getTelephoneNumber() { return RNSimData.phoneNumber0; }, - getRealtimeMcc(callback) { - RNSimData.getRealtimeMcc(callback); - }, - getRealtimeIccids(callback) { - RNSimData.getRealtimeIccid(callback); + getRealtimeInfo(callback) { + RNSimData.getRealtimeInfo(callback); }, getCarrierName() { return RNSimData.carrierName0;