Skip to content

πŸ“± Carrier Info gets networkType, networkGeneration, mobileCountryCode, mobileCountryCode, e.t.c from both android and iOS devices.

License

Notifications You must be signed in to change notification settings

Zfinix/carrier_info

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a23a365 Β· Sep 5, 2024

History

64 Commits
May 16, 2024
Apr 18, 2024
May 16, 2024
Dec 12, 2022
Jul 9, 2023
Mar 27, 2023
Mar 30, 2021
Dec 9, 2020
Nov 12, 2021
Dec 12, 2022
Dec 12, 2022
Apr 18, 2024
Dec 9, 2020
Mar 27, 2023
May 16, 2024
May 16, 2024

Repository files navigation

πŸ“± Carrier Info

pub package

Carrier Info gets networkType, networkGeneration, mobileCountryCode, mobileCountryCode, e.t.c from both android and ios devices. It's a port from this js project and an improvement on the existing flt_telephony_info package.

πŸ“Έ Screen Shots

Fetching android carrier info

Docs: https://developer.android.com/reference/android/telephony/TelephonyManager#getNetworkCountryIso(), https://developer.android.com/reference/android/telephony/SubscriptionManager

 AndroidCarrierData? carrierInfo = await CarrierInfo.getAndroidInfo();
 returns  {
   "isVoiceCapable": true,
   "isDataEnabled": true,
   "subscriptionsInfo": [
     {
       "mobileCountryCode": "310",
       "isOpportunistic": false,
       "mobileNetworkCode": "260",
       "displayName": "T-Mobile",
       "isNetworkRoaming": false,
       "simSlotIndex": 0,
       "phoneNumber": "+15551234567",
       "countryIso": "us",
       "subscriptionType": 0,
       "cardId": 0,
       "isEmbedded": false,
       "carrierId": 1,
       "subscriptionId": 1,
       "simSerialNo": "",
       "dataRoaming": 0
     }
   ],
   "isDataCapable": true,
   "isMultiSimSupported": "MULTISIM_NOT_SUPPORTED_BY_HARDWARE",
   "isSmsCapable": true,
   "telephonyInfo": [
     {
       "networkCountryIso": "us",
       "mobileCountryCode": "310",
       "mobileNetworkCode": "260",
       "displayName": "T-Mobile",
       "simState": "SIM_STATE_READY",
       "isoCountryCode": "us",
       "cellId": {
         "cid": 47108,
         "lac": 8514
       },
       "phoneNumber": "+15551234567",
       "carrierName": "T-Mobile",
       "subscriptionId": 1,
       "networkGeneration": "4G",
       "radioType": "LTE",
       "networkOperatorName": "T-Mobile"
     }
   ]
 };
  

 IosCarrierData? carrierInfo = await CarrierInfo.getIosInfo();

 returns  {
   "carrierData": [
     {
       "mobileNetworkCode": null,
       "carrierAllowsVOIP": true,
       "mobileCountryCode": null,
       "carrierName": "glo",
       "isoCountryCode": null
     },
     {
        "mobileNetworkCode": "20",
        "isoCountryCode": "ng",
        "carrierAllowsVOIP": true,
        "carrierName": "Airtel",
        "mobileCountryCode": "621"
      }
    ],
    "supportsEmbeddedSIM": false,
    "carrierRadioAccessTechnologyTypeList": [
      "LTE"
    ]
  }
 };

Permissions

You should add permissions that are required to your android manifest:

  <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  <uses-permission android:name="android.permission.READ_BASIC_PHONE_STATE" />
  <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
  <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" />

✨ Contribution

Lots of PR's would be needed to make this plugin standard, as for iOS there's a permanent limitation for getting the exact data usage, there's only one way around it and it's super complex.

About

πŸ“± Carrier Info gets networkType, networkGeneration, mobileCountryCode, mobileCountryCode, e.t.c from both android and iOS devices.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published