Login with Truecaller
- Add plugin in pubspec.yml
- import package where you want to add true caller login
- create true caller developer account, and your project
- <meta-data
android:name="com.truecaller.android.sdk.PartnerKey" android:value="uDIKT4db642a7606d43b0995b2a3c6a63756a"/>
5.Add above code in Manifest.xml file
6.Rename FlutterActivity to FlutterFragmentActivity in MainActivity.kt file
7.give user permissions in Manifest.xml file
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <uses-permission android:name="android.permission.READ_CALL_LOG"/> <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS"/>
8.main code
TruecallerSdk.initializeSDK(sdkOptions: TruecallerSdkScope.SDK_OPTION_WITH_OTP, consentMode:TruecallerSdkScope.CONSENT_MODE_POPUP, footerType:TruecallerSdkScope.FOOTER_TYPE_ANOTHER_METHOD, ); TruecallerSdk.isUsable.then((isUsable) { if (!isUsable) { TruecallerSdk.getProfile; StreamSubscription streamSubscription = TruecallerSdk.streamCallbackData.listen((truecallerSdkCallback) { switch (truecallerSdkCallback.result) { case TruecallerSdkCallbackResult.success: //If Truecaller user and has Truecaller app on his device, you'd directly get the Profile String firstName = truecallerSdkCallback.profile!.firstName; String? lastName = truecallerSdkCallback.profile!.lastName; String phNo = truecallerSdkCallback.profile!.phoneNumber; debugPrint("Kane:$firstName ...$lastName .. $phNo"); gettruecaller(first_name, last_name, mobile_number); // Navigator.push(context, // MaterialPageRoute(builder: (context)=>Registration()) // ); break; case TruecallerSdkCallbackResult.failure: int errorCode = truecallerSdkCallback.error!.code; break; case TruecallerSdkCallbackResult.verification: //If the callback comes here, it indicates that user has to be manually verified, so follow step 4 //You'd receive nullable error which can be used to determine user action that led to verification int? errorCode = truecallerSdkCallback.error?.code; print("Manual Verification Required!"); break; default: print("Invalid result"); } }); } else { // final snackBar = SnackBar(content: Text("Not Usable")); // ScaffoldMessenger.of(context).showSnackBar(snackBar); // print("***Not usable***"); } }); gettruecaller(String first_name, String last_name, String mobile_number){ truecallerapi(first_name, last_name, mobile_number).then((data) => { if(data != null){ if(data.error == 1){ Navigator.push(context, MaterialPageRoute(builder: (context)=>Registration()) ) }else{ _showToast(data.message), }, debugPrint("aa${data.error}.... ${data.message}") } });