Giter Club home page Giter Club logo

flutter-mobile-number-plugin's Introduction

mobile_number

This is a FLutter Plugin to get the device mobile number.

Note: It works for Android only because getting mobile number of sim card is not supported in iOS.

Note: If the mobile number is not pre-exist on sim card it will not return te phone number.

Installation

Link on Flutter plugins

https://pub.dev/packages/mobile_number

Note:

if you still using depecated FlutterActivty on MainActivity.java which is import of

  • import io.flutter.app.FlutterActivity;

not

  • import io.flutter.embedding.android.FlutterActivity;

then you need to add the following to your MainActivity.java

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        MobileNumberPlugin.registerWith(registrarFor("com.amorenew.mobile_number.MobileNumberPlugin()"));
    }

Usage

Check Phone Permission

await MobileNumber.hasPhonePermission

Request Phone Permission

await MobileNumber.requestPhonePermission

Listen to widget resume after Phone Permission request

      if (isPermissionGranted) {
        //Get mobile number
      } else {
        //Request Phone Permission
      }
    });

Alternative Phone Permission

permission_handler has a better implementation of device general permissions.

A simple example would be:

var status = await Permission.phone.status;
if (!status.isGranted) {
  status = await Permission.phone.request();
}

if (!status.isGranted) {
  // return or throw some error
}

return await MobileNumber.mobileNumber;

Get first sim card number

    final String mobileNumber = await MobileNumber.mobileNumber;
    return mobileNumber;
  }

Get List of sim cards for dual sim cards

    final List<SimCard> simCards = await MobileNumber.getSimCards;
    return simCards;
  }

alt text

flutter-mobile-number-plugin's People

Contributors

amorenew avatar amreniouinnovent avatar caio-deiro avatar simply-alliv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

flutter-mobile-number-plugin's Issues

/flutter/.pub-cache/hosted/pub.dartlang.org/mobile_number-1.0.4/android/src/main/java/com/amorenew/mobile_number/MobileNumberPlugin.java uses or overrides a deprecated API.

Note: /home/pc2/flutter/.pub-cache/hosted/pub.dartlang.org/mobile_number-1.0.4/android/src/main/java/com/amorenew/mobile_number/MobileNumberPlugin.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
e: /home/pc2/Documents/lamar pekerjaan/project test/ayyuby_test_jti/android/app/src/main/kotlin/com/example/ayyuby_test_jti/MainActivity.kt: (6, 48): Unresolved reference: Bundle
e: /home/pc2/Documents/lamar pekerjaan/project test/ayyuby_test_jti/android/app/src/main/kotlin/com/example/ayyuby_test_jti/MainActivity.kt: (8, 9): Unresolved reference: MobileNumberPlugin
e: /home/pc2/Documents/lamar pekerjaan/project test/ayyuby_test_jti/android/app/src/main/kotlin/com/example/ayyuby_test_jti/MainActivity.kt: (8, 41): Unresolved reference: registrarFor

FAILURE: Build failed with an exception.

  • What went wrong:
    Execution failed for task ':app:compileDebugKotlin'.

Compilation error. See log for more details

  • Try:
    Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

  • Get more help at https://help.gradle.org

BUILD FAILED in 18s
Exception: Gradle task assembleDebug failed with exit code 1

how to fix the error

Dart Error: Unhandled exception

Hi @amorenew

I'm trying to use your awesome plugin, however I got this error on my real device

E/flutter (27901): [ERROR:flutter/shell/common/shell.cc(213)] Dart Error: Unhandled exception:
E/flutter (27901): Invalid argument(s)
E/flutter (27901): #0      _StringBase.+  (dart:core-patch/string_patch.dart:262:57)
E/flutter (27901): #1      MobileNumber.mobileNumber 
package:mobile_number/mobile_number.dart:47
E/flutter (27901): <asynchronous suspension>
E/flutter (27901): #2      __MobileNumberInputState._getPhoneNumbers 
package:mobile/screens/login_screen.dart:166
E/flutter (27901): #3      __MobileNumberInputState.initState 
package:mobile/screens/login_screen.dart:156
E/flutter (27901): #4      StatefulElement._firstBuild 
package:flutter/…/widgets/framework.dart:4640
E/flutter (27901): #5      ComponentElement.mount 
package:flutter/…/widgets/framework.dart:4476
E/flutter (27901): #6      Element.inflateWidget 
package:flutter/…/widgets/framework.dart:3446
E/flutter (27901): #7      Element.updateChild 
package:flutter/…/widgets/framework.dart:3214
E/flutter (27901): #8      RenderObjectElement.updateChildren 
package:flutter/…/widgets/framework.dart:5580
E/flutter (27901): #9      MultiChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5957
E/flutter (27901): #10     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #11     ComponentElement.performRebuild 
package:flutter/…/widgets/framework.dart:4527
E/flutter (27901): #12     StatefulElement.performRebuild 
package:flutter/…/widgets/framework.dart:4675
E/flutter (27901): #13     Element.rebuild 
package:flutter/…/widgets/framework.dart:4218
E/flutter (27901): #14     StatefulElement.update 
package:flutter/…/widgets/framework.dart:4707
E/flutter (27901): #15     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #16     SingleChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5837
E/flutter (27901): #17     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #18     SingleChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5837
E/flutter (27901): #19     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #20     SingleChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5837
E/flutter (27901): #21     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #22     SingleChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5837
E/flutter (27901): #23     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #24     SingleChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5837
E/flutter (27901): #25     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #26     ComponentElement.performRebuild 
package:flutter/…/widgets/framework.dart:4527
E/flutter (27901): #27     Element.rebuild 
package:flutter/…/widgets/framework.dart:4218
E/flutter (27901): #28     StatelessElement.update 
package:flutter/…/widgets/framework.dart:4583
E/flutter (27901): #29     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #30     SingleChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5837
E/flutter (27901): #31     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #32     ComponentElement.performRebuild 
package:flutter/…/widgets/framework.dart:4527
E/flutter (27901): #33     StatefulElement.performRebuild 
package:flutter/…/widgets/framework.dart:4675
E/flutter (27901): #34     Element.rebuild 
package:flutter/…/widgets/framework.dart:4218
E/flutter (27901): #35     StatefulElement.update 
package:flutter/…/widgets/framework.dart:4707
E/flutter (27901): #36     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #37     SingleChildRenderObjectElement.update 
package:flutter/…/widgets/framework.dart:5837
E/flutter (27901): #38     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #39     ComponentElement.performRebuild 
package:flutter/…/widgets/framework.dart:4527
E/flutter (27901): #40     Element.rebuild 
package:flutter/…/widgets/framework.dart:4218
E/flutter (27901): #41     StatelessElement.update 
package:flutter/…/widgets/framework.dart:4583
E/flutter (27901): #42     Element.updateChild 
package:flutter/…/widgets/framework.dart:3201
E/flutter (27901): #43     ComponentElement.performRebuild 
package:flutter/…/widgets/framework.dart:4527
E/flutter (27901): #44     Element.rebuild 
package:flutter/…/widgets/framework.dart:4218

Error after install mobile_number

Hi man, I was trying to get the phone number of an Android device and I found this plugin. But after installing it, I couldn't run my app.
Captura de Pantalla 2020-05-08 a la(s) 15 11 40

Could not get mobile number normally

What happened:

Something wrong occur in android when i try to get mobile number by using mobile_number: 1.0.0.

stack output

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference
E/MethodChannel#mobile_number(21785): at android.telephony.SubscriptionManager.from(SubscriptionManager.java:992)
E/MethodChannel#mobile_number(21785): at com.example.mobile_number.MobileNumberPlugin.generateMobileNumber(MobileNumberPlugin.java:183)
E/MethodChannel#mobile_number(21785): at com.example.mobile_number.MobileNumberPlugin.getMobileNumber(MobileNumberPlugin.java:170)
E/MethodChannel#mobile_number(21785): at com.example.mobile_number.MobileNumberPlugin.onMethodCall(MobileNumberPlugin.java:119)
E/MethodChannel#mobile_number(21785): at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226)
E/MethodChannel#mobile_number(21785): at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#mobile_number(21785): at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:631)
E/MethodChannel#mobile_number(21785): at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#mobile_number(21785): at android.os.MessageQueue.next(MessageQueue.java:336)
E/MethodChannel#mobile_number(21785): at android.os.Looper.loop(Looper.java:183)
E/MethodChannel#mobile_number(21785): at android.app.ActivityThread.main(ActivityThread.java:7589)
E/MethodChannel#mobile_number(21785): at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#mobile_number(21785): at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
E/MethodChannel#mobile_number(21785): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:953)
I/flutter (21785): Failed to get mobile number because of 'Attempt to invoke virtual method 'java.lang.Object android.content.Context.getSystemService(java.lang.String)' on a null object reference'

What have I done:

My device system version is android 10, i can not get mobile number also when run the example in pub.
I had add the permission declare in AndroidManifest.xml like below:

 <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Mobile number not detected

I am using your package for the last 5 6 months ago and tried to get my both mobile number which is in my mobile phone but I am not getting only I got Jio operator number when it is in sim slot 1 otherwise Jio is also not detected.

Issue get mobile number

I using package mobile_number: ^1.0.4 and issue to get mobile number.
this file not found in fluttetr project MainActivity.java.
how to add this code
@OverRide
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
MobileNumberPlugin.registerWith(registrarFor("com.amorenew.mobile_number.MobileNumberPlugin()"));
}

Where does the mounted variable come from

Sorry for the noob question here. I'm trying to follow along the example and there is a line
if(!mounted) return;

my error says mounted is undefined. I'm looked and used search function to try and fin another use of the work in the code file but there is only one time "mounted" is used. Where does that variable get created?

mostly not working

I test and it works on Pocophone, Pixel. But for Oppo and Samsung is not working.

Failed to get mobile number because of 'Attempt to invoke virtual method 'java.lang.Object android.app.Activity.getSystemService(java.lang.String)' on a null object reference'

I am able to obtain number when I use it within the main app function as per the example.

Problem happens when I try to read the mobile number within an isolate started with foreground_service plugin.

void maybeStartFGS() async {
  if (!(await ForegroundService.foregroundServiceIsStarted())) {
    await ForegroundService.setServiceIntervalSeconds(5);
    await ForegroundService.startForegroundService(foregroundServiceFunction);
    await ForegroundService.getWakeLock();
  }
}
void foregroundServiceFunction() {
  getMobileNumber();
  ...
}
void getMobileNumber() async{
  try {
    List<mobileNumber.SimCard> cards = await mobileNumber.MobileNumber.getSimCards;
    print(cards);
  } on PlatformException catch (e) {
    debugPrint("Failed to get mobile number because of '${e.message}'");
  }
}
E/MethodChannel#mobile_number( 2065): Failed to handle method call
E/MethodChannel#mobile_number( 2065): java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.app.Activity.getSystemService(java.lang.String)' on a null object reference
E/MethodChannel#mobile_number( 2065):   at com.amorenew.mobile_number.MobileNumberPlugin.getSubscriptions(MobileNumberPlugin.java:214)
E/MethodChannel#mobile_number( 2065):   at com.amorenew.mobile_number.MobileNumberPlugin.generateMobileNumber(MobileNumberPlugin.java:180)
E/MethodChannel#mobile_number( 2065):   at com.amorenew.mobile_number.MobileNumberPlugin.getMobileNumber(MobileNumberPlugin.java:171)
E/MethodChannel#mobile_number( 2065):   at com.amorenew.mobile_number.MobileNumberPlugin.onMethodCall(MobileNumberPlugin.java:121)
E/MethodChannel#mobile_number( 2065):   at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:230)
E/MethodChannel#mobile_number( 2065):   at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/MethodChannel#mobile_number( 2065):   at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/MethodChannel#mobile_number( 2065):   at android.os.MessageQueue.nativePollOnce(Native Method)
E/MethodChannel#mobile_number( 2065):   at android.os.MessageQueue.next(MessageQueue.java:363)
E/MethodChannel#mobile_number( 2065):   at android.os.Looper.loop(Looper.java:176)
E/MethodChannel#mobile_number( 2065):   at android.app.ActivityThread.main(ActivityThread.java:8347)
E/MethodChannel#mobile_number( 2065):   at java.lang.reflect.Method.invoke(Native Method)
E/MethodChannel#mobile_number( 2065):   at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
E/MethodChannel#mobile_number( 2065):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)

requestPhonePermission infinite loop

Greetings,

I found some wierd behaviour when request access for the phone number. If the user has not already provided its answear, the requestPhonePermission popup menu appears as expected. But once the user has denied the phone access, the requestPhonePermission never popup, hanging the code in its Future. I had to put a timeout in requestPhonePermission to be able to passthrough it.

My code:

    var phoneNumber;
    if (Modular.get<Environment>().build != EnvironmentsType.production && Platform.isAndroid) {
      try {
        if (!(await MobileNumber.hasPhonePermission)) {
          await MobileNumber.requestPhonePermission.timeout(Duration(milliseconds: 1500));
        }
        if (await MobileNumber.hasPhonePermission) {
          phoneNumber = await MobileNumber.mobileNumber;
        }
      } catch (e) {
        print("It was not possible to fetch phone number, $e");
      }
    }

My flutter doctor:

 flutter doctor -v
[✓] Flutter (Channel stable, 1.22.4, on Linux, locale en_US.UTF-8)
    • Flutter version 1.22.4
    • Framework revision 1aafb3a8b9 (8 weeks ago), 2020-11-13 09:59:28 -0800
    • Engine revision 2c956a31c0
    • Dart version 2.10.4

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /usr/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_275-8u275-b01-0ubuntu1~20.04-b01)
    • All Android licenses accepted.

[✓] Connected device (1 available)
    • sdk gphone x86 arm (mobile) • emulator-5554 • android-x86 • Android 11 (API 30) (emulator)

AAPT: error: resource android:attr/lStar not found.

Logs:

BUILD FAILED in 57s
Running Gradle task 'assembleRelease'...                           58.4s
Gradle task assembleRelease failed with exit code 1
PS D:\project> flutter build apk --split-per-abi

 Building with sound null safety 


FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':mobile_number:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.tasks.VerifyLibraryResourcesTask$Action
   > Android resource linking failed
     ERROR:D:\project\build\mobile_number\intermediates\merged_res\release\values\values.xml:132: AAPT: error: resource android:attr/lStar not found.

sim card number not showing

Three Scenarios we faced in this plugin(Android): -

  1. Only the first sim is showing on a few devices, - 80% of Device
  2. None of the sim is showing on a few devices, - 10% Device
  3. Both sim is showing, - a 10% Device

Any Solution?

mobile_number/MobileNumberPlugin.java uses or overrides a deprecated API.

Hi, while upgrading to ### flutter v3.22.0

We have this following error on console

../pub.dev/mobile_number-2.1.1/android/src/main/java/com/amorenew/mobile_number/MobileNumberPlugin.java uses or overrides a deprecated API.

To be precise, here is the error

/MethodChannel#mobile_number: Failed to handle method call java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.app.Activity.getSystemService(java.lang.String)' on a null object reference at com.amorenew.mobile_number.MobileNumberPlugin.getSubscriptions(MobileNumberPlugin.java:214) at com.amorenew.mobile_number.MobileNumberPlugin.generateMobileNumber(MobileNumberPlugin.java:180) at com.amorenew.mobile_number.MobileNumberPlugin.getMobileNumber(MobileNumberPlugin.java:171) at com.amorenew.mobile_number.MobileNumberPlugin.onMethodCall(MobileNumberPlugin.java:121) at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:267) at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:292) at io.flutter.embedding.engine.dart.DartMessenger.lambda$dispatchMessageToQueue$0$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:319) at io.flutter.embedding.engine.dart.DartMessenger$$ExternalSyntheticLambda0.run(Unknown Source:12) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:211) at android.os.Looper.loop(Looper.java:300) at android.app.ActivityThread.main(ActivityThread.java:8282) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:576) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1074)

flutter doctor:

Doctor summary (to see all details, run flutter doctor -v): [!] Flutter (Channel stable, 3.22.0, on macOS 13.0.1 22A400 darwin-arm64 (Rosetta), locale en-IN) ! Warning: darton your path resolves to /usr/local/Cellar/dart/2.16.1/libexec/bin/dart, which is not inside your current Flutter SDK checkout at /Users/user/fvm/versions/3.22.0. Consider adding /Users/user/fvm/versions/3.22.0/bin to the front of your path. [✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0-rc4) [!] Xcode - develop for iOS and macOS (Xcode 14.1) ! Flutter recommends a minimum Xcode version of 15. Download the latest version or update via the Mac App Store. ! CocoaPods 1.12.1 out of date (1.13.0 is recommended). CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side. Without CocoaPods, plugins will not work on iOS or macOS. For more info, see https://flutter.dev/platform-plugins To upgrade see https://guides.cocoapods.org/using/getting-started.html#updating-cocoapods for instructions. [✓] Chrome - develop for the web [✓] Android Studio (version 2021.1) [✓] Connected device (4 available) [✓] Network resources

MainActiviry in Kotlin

MobileNumberPlugin.registerWith(registrarFor("com.amorenew.mobile_number.MobileNumberPlugin()"));

how i can white this java code in kotlin

Null safety?

Now that Flutter 2 is out, can we please migrate to null-safe?

Failed to get mobile number because of 'null'

I'm trying to use it on my device, I did exactly the same as the example, but the error doesn't tell me why I didn't return the number.

Failed to get mobile number because of 'null'

E/flutter ( 3810): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Invalid argument(s)
E/flutter ( 3810): #0 _StringBase.+ (dart:core-patch/string_patch.dart:262:57)
E/flutter ( 3810): #1 MobileNumber.mobileNumber (package:mobile_number/mobile_number.dart:47:45)
E/flutter ( 3810):
E/flutter ( 3810): #2 _MyAppState.initMobileNumberState (package:teleatendimento_saude_mobile/main.dart:40:41)
E/flutter ( 3810):
E/flutter ( 3810): #3 _MyAppState.initState (package:teleatendimento_saude_mobile/main.dart:28:5)
E/flutter ( 3810): #4 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4640:58)
E/flutter ( 3810): #5 ComponentElement.mount (package:flutter/src/widgets/framework.dart:4476:5)
E/flutter ( 3810): #6 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3446:14)
E/flutter ( 3810): #7 Element.updateChild (package:flutter/src/widgets/framework.dart:3214:18)
E/flutter ( 3810): #8 RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1148:16)
E/flutter ( 3810): #9 RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1119:5)
E/flutter ( 3810): #10 RenderObjectToWidgetAdapter.attachToRenderTree. (package:flutter/src/widgets/binding.dart:1061:17)
E/flutter ( 3810): #11 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2607:19)
E/flutter ( 3810): #12 RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1060:13)
E/flutter ( 3810): #13 WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:941:7)
E/flutter ( 3810): #14 WidgetsBinding.scheduleAttachRootWidget. (package:flutter/src/widgets/binding.dart:922:7)
E/flutter ( 3810): #15 _rootRun (dart:async/zone.dart:1180:38)
E/flutter ( 3810): #16 _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter ( 3810): #17 _CustomZone.runGuarded (dart:async/zone.dart:979:7)
E/flutter ( 3810): #18 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1019:23)
E/flutter ( 3810): #19 _rootRun (dart:async/zone.dart:1184:13)
E/flutter ( 3810): #20 _CustomZone.run (dart:async/zone.dart:1077:19)
E/flutter ( 3810): #21 _CustomZone.bindCallback. (dart:async/zone.dart:1003:23)
E/flutter ( 3810): #22 Timer._createTimer. (dart:async-patch/timer_patch.dart:23:15)
E/flutter ( 3810): #23 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:398:19)
E/flutter ( 3810): #24 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:429:5)
E/flutter ( 3810): #25 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)

does anyone know why?

shouldShowRequestPermissionRationale() on a null object reference

Using Google Pixel 2 (Android 10), this error is thrown when MobileNumber.requestPhonePermission is called:

[+17486 ms] E/MethodChannel#mobile_number(10782): Failed to handle method call
[        ] E/MethodChannel#mobile_number(10782): java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.app.Activity.shouldShowRequestPermissionRationale(java.lang.String)' on a null object reference
[        ] E/MethodChannel#mobile_number(10782): 	at androidx.core.app.ActivityCompat.shouldShowRequestPermissionRationale(ActivityCompat.java:549)
[        ] E/MethodChannel#mobile_number(10782): 	at com.example.mobile_number.MobileNumberPlugin.requestPhonePermission(MobileNumberPlugin.java:155)
[        ] E/MethodChannel#mobile_number(10782): 	at com.example.mobile_number.MobileNumberPlugin.onMethodCall(MobileNumberPlugin.java:125)
[        ] E/MethodChannel#mobile_number(10782): 	at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:226)
[        ] E/MethodChannel#mobile_number(10782): 	at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
[        ] E/MethodChannel#mobile_number(10782): 	at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:631)
[        ] E/MethodChannel#mobile_number(10782): 	at android.os.MessageQueue.nativePollOnce(Native Method)
[        ] E/MethodChannel#mobile_number(10782): 	at android.os.MessageQueue.next(MessageQueue.java:336)
[        ] E/MethodChannel#mobile_number(10782): 	at android.os.Looper.loop(Looper.java:174)
[        ] E/MethodChannel#mobile_number(10782): 	at android.app.ActivityThread.main(ActivityThread.java:7356)
[        ] E/MethodChannel#mobile_number(10782): 	at java.lang.reflect.Method.invoke(Native Method)
[        ] E/MethodChannel#mobile_number(10782): 	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
[        ] E/MethodChannel#mobile_number(10782): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:930)
[ +236 ms] E/flutter (10782): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: PlatformException(error, Attempt to invoke virtual method 'boolean android.app.Activity.shouldShowRequestPermissionRationale(java.lang.String)' on a null object reference, null)
[        ] E/flutter (10782): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:569:7)
[        ] E/flutter (10782): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:156:18)
[        ] E/flutter (10782): <asynchronous suspension>
[        ] E/flutter (10782): #2      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:329:12)
[        ] E/flutter (10782): #3      MobileNumber.requestPhonePermission (package:mobile_number/mobile_number.dart:35:20)

Permissions in AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_PHONE_NUMBERS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

Any ideas?

Failed to fetch mobile number

unable to fetch mobile number but the library is able to get all other details like Carrier name, country number, display name, etc

Add a check for the ability to get the phone number

I Think you may add a check for the ability to get the phone number (like if it's an iOS app)
For example instead of this:

try {
mobileNumber = await MobileNumber.mobileNumber;
} on Exception{
mobileNumber = 'Failed to get mobile number.';
}

The code can look like this

if(await MobileNumber.canGetNumber) {
  try {
      mobileNumber = await MobileNumber.mobileNumber;
    } on Exception{
            mobileNumber = 'Failed to get mobile number.';
    }
} else {
  mobileNumber = 'auto detecting number isn't supported';
}

getActiveSubscriptionInfoList() from SubscriptionManager can be null

in the next link you can find info about getActiveSubscriptionInfoList() returning null
https://developer.android.com/reference/android/telephony/SubscriptionManager#getActiveSubscriptionInfoList()

error PlatformException(error, Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference, null, java.lang.NullPointerException: Attempt to invoke interface method 'java.util.Iterator java.util.List.iterator()' on a null object reference at f1.b.i(Unknown Source:15) at f1.b.j(Unknown Source:10) at f1.b.d(Unknown Source:79) at d6.k$a.a(Unknown Source:17) at q5.c.l(Unknown Source:18) at q5.c.m(Unknown Source:20) at q5.c.i(Unknown Source:0) at q5.b.run(Unknown Source:12) at android.os.Handler.handleCallback(Handler.java:907) at android.os.Handler.dispatchMessage(Handler.java:105) at android.os.Looper.loop(Looper.java:216) at android.app.ActivityThread.main(ActivityThread.java:7625) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987) )

Can't get mobile phone number

I'm trying to use the lib, but it isn't returning mobile phone number, just an empty string. Can you help me out?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.