Explore all SMS open source software, libraries, packages, source code, cloud functions and APIs.

Popular New Releases in SMS

easy-sms

2.1.1

notifme-sdk

1.10.0

ali-oss

v6.17.0

vonage-php-sdk-core

3.0.3

gmsm

v1.4.1

Popular Libraries in SMS

easy-sms

by overtrue doticonphpdoticon

star image 2683 doticon

:calling: 一款满足你的多种发送需求的短信发送组件

textbelt

by typpo doticonjavascriptdoticon

star image 2331 doticonMIT

Free API for outgoing SMS

notifme-sdk

by notifme doticonjavascriptdoticon

star image 1821 doticonMIT

A Node.js library to send all kinds of transactional notifications.

ali-oss

by ali-sdk doticonjavascriptdoticon

star image 1639 doticonMIT

Aliyun OSS(Object Storage Service) JavaScript SDK for the Browser and Node.js

stashboard

by twilio doticonpythondoticon

star image 1595 doticonMIT

An open-source status dashboard running on App Engine

sms-backup-plus

by jberkel doticonjavadoticon

star image 1594 doticonApache-2.0

Backup Android SMS, MMS and call log to Gmail / Gcal / IMAP

gosms

by haxpax doticongodoticon

star image 1337 doticonGPL-2.0

:mailbox_closed: Your own local SMS gateway in Go

Bombers

by bhattsameer doticonpythondoticon

star image 1195 doticon

SMS/Email/Whatsapp/Twitter/Instagram bombers Collection :bomb::bomb::bomb: :boom: Also added collection of some Fake SMS utilities which helps in skip phone number based SMS verification by using a temporary phone number that acts like a proxy.

Silence

by SilenceIM doticonjavadoticon

star image 1023 doticonGPL-3.0

PROJECT MOVED: https://git.silence.dev/Silence/Silence-Android/ (GitHub is just a mirror.)

Trending New libraries in SMS

b0mb3r

by crinny doticonpythondoticon

star image 555 doticonMPL-2.0

💣 Открытый СМС бомбер

fake-sms

by Narasimha1997 doticongodoticon

star image 530 doticonGPL-2.0

A simple command line tool using which you can skip phone number based SMS verification by using a temporary phone number that acts like a proxy.

Moriarty-Project

by AzizKpln doticonpythondoticon

star image 401 doticonLGPL-3.0

This tool gives information about the phone number that you entered.

laravel-mobile-verification

by mohammad-fouladgar doticonphpdoticon

star image 238 doticonMIT

This package provides convenient methods for making token code, sending and verifying mobile phone verification requests.

Simple-SMS-Messenger

by SimpleMobileTools doticonkotlindoticon

star image 217 doticonGPL-3.0

An easy and quick way of managing SMS and MMS messages without ads.

YetAnotherSMSBomber

by AvinashReddy3108 doticonpythondoticon

star image 164 doticonGPL-3.0

Clean, small and powerful SMS bomber script.

android-bomber

by dmitrijkotov634 doticonjavadoticon

star image 154 doticonMIT

Открытый SMS Bomber

Master-Bomber

by navin-hariharan doticonpythondoticon

star image 127 doticon

The ultimate bomber be it mail, SMS or call. Anonymous mail and SMS sending options are also available :)

ApiTest

by Woqurefan doticonhtmldoticon

star image 120 doticon

接口测试平台-python3+django+requests实现 公众号:测试开发干货 testerhome社团:测试方舟号

Top Authors in SMS

1

TwilioDevEd

21 Libraries

star icon256

2

Vonage

13 Libraries

star icon1697

3

Nexmo

11 Libraries

star icon376

4

messagemedia

10 Libraries

star icon47

5

laravel-notification-channels

8 Libraries

star icon132

6

ringcentral

7 Libraries

star icon123

7

philnash

7 Libraries

star icon133

8

minchao

6 Libraries

star icon89

9

tylerlong

6 Libraries

star icon15

10

AfricasTalkingLtd

5 Libraries

star icon307

1

21 Libraries

star icon256

2

13 Libraries

star icon1697

3

11 Libraries

star icon376

4

10 Libraries

star icon47

6

7 Libraries

star icon123

7

7 Libraries

star icon133

8

6 Libraries

star icon89

9

6 Libraries

star icon15

10

5 Libraries

star icon307

Trending Kits in SMS

Here are the top Python SMS API libraries offering several features that make sending SMS messages easy using APIs. These libraries offer a simple and easy-to-use interface for integrating with SMS APIs. You can use the functions offered by these libraries for sending SMS messages without worrying about the complexity of the underlying APIs.  


Many libraries offer features for tracking your message delivery status. You can check when your message was delivered; if you still need to, you can get the details about why it failed. Some libraries offer features to create and use message templates to allow you to create reusable templates for frequently sent messages, saving you effort and time. Python SMS API libraries offer integration with different SMS gateways that will allow you to select the best SMS gateway for your requirements. It offers support for Unicode characters that allow sending messages in non-English languages.  


Here is the list of top Python SMS API libraries that are handpicked to help developers with SMS API-related requirements: 

twilio-python: 

  • Is a Python library that offers an easy-to-use interface for the Twilio SMS API.  
  • Is a cloud communication platform that offers APIs for MMS, voice messaging, and SMS.  
  • Supports features like message media, two-factor authentication (2FA), and message templates using SMS. 

plivoframework: 

  • Is a Python library that offers an easy-to-use interface for the Plivo SMS API.  
  • You can send SMS messages, receive incoming SMS messages, and track message delivery status.  
  • To use this, you must first sign up for a Plivo account and get your Auth ID and Token.  

vonage-python-sdk: 

  • Is a Python library that offers an easy-to-use interface for the Vonage SMS API and is a cloud communication platform that offers APIs for voice messaging, SMS, and many more.  
  • With this, you can send SMS messages, receive incoming SMS messages, and track the message's delivery status. 
  • Supports features like message media, two-factor authentication (2FA), and message templates using SMS. 

africastalking-python: 

  • Is a Python wrapper for Africa’s Talking API, a Pan-African communication platform that offers developers tools for building voice, payment, and SMS solutions.  
  • Enables Python developers to integrate Africa’s Talking API into their applications and send SMS messages using the platform.  
  • Need to sign up for an account and obtain an API key and username.  

smsgate: 

  • Is a Python library developed by Pentagrid Secure, which offers a simple interface to send SMS messages using the Twilio SMS API. 
  • Abstracts away some of the complexity of using the Twilio API and offers a simple Python interface for sending SMS messages. 
  • Offers functionality to receive SMS messages and query message delivery status. 

jasmin-web-panel: 

  • Is a Python library that offers a web-based UI to manage the Jasmin SMS gateway.  
  • Is built on top of the Django web framework and offers an intuitive and simple interface for managing SMS messaging operations using Jasmin.  
  • Use this to manage SMS messaging operations, like message templates, contact lists, and sending and receiving SMS messages. 

python-rest-api: 

  • Is a Python library that offers a simple interface to build RESTful APIs for sending SMS messages.  
  • Can be used for building APIs that support SMS messaging functionality. 
  • Offers a straightforward way for defining API routes and associated handlers using decorators.  

smsapi-python-client: 

  • Is a Python library developed by SMSAPI, which offers a simple interface to send SMS messages using the SMSAPI SMS gateway.  
  • Abstracts away some of the complexity of using the SMSAPI API and offers a simple Python interface to send SMS messages.  
  • Offers functionality to query the status of sent SMS messages, manage contact lists, and many more. 

way2sms: 

  • Is a Python library that allows you to send SMS messages using the Way2SMS service in India.  
  • Allows you to send messages to any mobile number in India and offers functionality to check the balance on your Way2SMS account.  
  • Offers functionality to check the balance on your Way2SMS account and get information about the last few messages you sent.  

aliyunsdkcore: 

  • Is a Python SDK which offers access to the Alibaba Cloud Services API. 
  • Is a cloud computing platform that offers numerous services like storage, network, computing, and database services. 
  • You can access various Alibaba Cloud services, like the Alibaba Cloud SMS service. 

infobip-api-python-client: 

  • Is a Python library that offers an interface for the Infobip API.  
  • Is a cloud-based messaging platform that offers numerous services, like push notifications, SMS, email, and many more.  
  • You can send SMS messages to mobile numbers worldwide, track the status of your messages, and manage account settings. 

Trending Discussions on SMS

Apps targeting Android 12 and higher required to specify an explicit value for `android:exported` [Cordova]

How to Ensure only one account can sign into flutter app from one phone

How do I add a dropdown menu that when you select an option and click send it shows the option in the email?

java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest;

How to auto fill OTP textfield on OTP code received from firebase in iOS, Swift? (WITHOUT TAPPING)

Why is pattern matching ok in scala but using instanceof is a sign of bad code in Java

Publishing an unofficial version of Telegram in Play Console

How do I "not" select first character in a regex pattern?

Bad request in PHP

SmsRetrieverClient Crash last update

QUESTION

Apps targeting Android 12 and higher required to specify an explicit value for `android:exported` [Cordova]

Asked 2022-Apr-01 at 20:06

When I am running to make the Apk in GitHub I got the error. As I am building the Apk in GitHub. There is no way to define something inside manifest as it is building every time fresh. All I can do is inside the Config.Xml file. After Adding android:exported="false" to it, also getting same error. Both images for this question reference attached here. GitHub Error and Config.Xml. Help will be appreciated.

1<?xml version='1.0' encoding='utf-8'?>
2<widget id="com.likehub.sweetheart" version="1.1.64" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
3    <name>sweetheart</name>
4    <description>making love bird together</description>
5    <author email="mynamey9er@gmail.com" href="">likehub</author>
6    <content src="index.html" />
7    <access origin="*" />
8    <allow-intent href="http://*/*" />
9    <allow-intent href="https://*/*" />
10    <allow-intent href="tel:*" />
11    <allow-intent href="sms:*" />
12    <allow-intent href="mailto:*" />
13    <allow-intent href="geo:*" />
14    <preference name="AndroidXEnabled" value="true" />
15    <preference name="WebViewBounce" value="false" />
16    <preference name="UIWebViewBounce" value="false" />
17    <preference name="DisallowOverscroll" value="true" />
18    <preference name="LoadUrlTimeoutValue" value="700000" />
19    <preference name="ScrollEnabled" value="false" />
20    <preference name="SplashMaintainAspectRatio" value="true" />
21    <preference name="FadeSplashScreenDuration" value="1000" />
22    <preference name="FadeSplashScreen" value="true" />
23    <preference name="SplashShowOnlyFirstTime" value="false" />
24    <preference name="SplashScreen" value="screen" />
25    <preference name="SplashScreenDelay" value="5000" />
26    <preference name="AutoHideSplashScreen" value="true" />
27    <preference name="ShowSplashScreen" value="false" />
28    <preference name="ShowSplashScreenSpinner" value="false" />
29    <preference name="android-minSdkVersion" value="22" />
30    <preference name="BackupWebStorage" value="none" />
31    <preference name="Orientation" value="portrait" />
32    <preference name="AndroidPersistentFileLocation" value="Compatibility" />
33    <preference name="GradlePluginKotlinEnabled" value="true" />
34    <preference name="GradlePluginKotlinCodeStyle" value="official" />
35    <preference name="GradlePluginKotlinVersion" value="1.3.50" />
36    <preference name="AndroidLaunchMode" value="singleTask" />
37    <feature name="StatusBar">
38        <param name="ios-package" onload="true" value="CDVStatusBar" />
39    </feature>
40    <platform  name="android">
41        <preference name="android-targetSdkVersion" value="31" />
42        <edit-config  file="app/src/main/AndroidManifest.xml" mode="merge" android:exported="true" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
43            <application android:usesCleartextTraffic="true" />
44            <application android:networkSecurityConfig="@xml/network_security_config" />
45            
46            <intent-filter>
47                <action  android:name="MainActivity" android:exported="false"/>
48                <category android:name="android.intent.category.DEFAULT" />
49            </intent-filter>
50        </edit-config>
51        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
52        <allow-intent href="market:*" />
53        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
54        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
55        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
56        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
57        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
58        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
59        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
60        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
61        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
62        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
63        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
64        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
65        <splash density="ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
66        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
67        <splash density="mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
68        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
69        <splash density="hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
70        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
71        <splash density="xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
72        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
73        <splash density="xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
74        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
75        <splash density="xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
76        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
77    </platform>
78    <platform name="ios">
79        <allow-intent href="itms:*" />
80        <allow-intent href="itms-apps:*" />
81        <icon height="57" src="resources/ios/icon/icon.png" width="57" />
82        <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
83        <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
84        <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
85        <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
86        <icon height="20" src="resources/ios/icon/icon-20.png" width="20" />
87        <icon height="40" src="resources/ios/icon/icon-20@2x.png" width="40" />
88        <icon height="60" src="resources/ios/icon/icon-20@3x.png" width="60" />
89        <icon height="48" src="resources/ios/icon/icon-24@2x.png" width="48" />
90        <icon height="55" src="resources/ios/icon/icon-27.5@2x.png" width="55" />
91        <icon height="29" src="resources/ios/icon/icon-29.png" width="29" />
92        <icon height="58" src="resources/ios/icon/icon-29@2x.png" width="58" />
93        <icon height="87" src="resources/ios/icon/icon-29@3x.png" width="87" />
94        <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
95        <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
96        <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
97        <icon height="88" src="resources/ios/icon/icon-44@2x.png" width="88" />
98        <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
99        <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
100        <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
101        <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
102        <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
103        <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
104        <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
105        <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
106        <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
107        <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
108        <icon height="172" src="resources/ios/icon/icon-86@2x.png" width="172" />
109        <icon height="196" src="resources/ios/icon/icon-98@2x.png" width="196" />
110        <icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
111        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
112        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
113        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
114        <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
115        <splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
116        <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
117        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
118        <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
119        <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
120        <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
121        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
122        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
123        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
124        <splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
125        <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
126        <icon height="216" src="resources/ios/icon/icon-108@2x.png" width="216" />
127        <splash height="2688" src="resources/ios/splash/Default-2688h~iphone.png" width="1242" />
128        <splash height="1242" src="resources/ios/splash/Default-Landscape-2688h~iphone.png" width="2688" />
129        <splash height="1792" src="resources/ios/splash/Default-1792h~iphone.png" width="828" />
130        <splash height="828" src="resources/ios/splash/Default-Landscape-1792h~iphone.png" width="1792" />
131    </platform>
132    <plugin name="cordova-plugin-googleplus" spec="^8.4.0">
133        <variable name="WEB_APPLICATION_CLIENT_ID" value="0000000000000-wwwwwwwmkv51oxxxxxxxxxxx.apps.googleusercontent.co" />
134    </plugin>
135    <platform name="android">
136        <preference name="GoogleAndroidClientId" value="888809hhju-i9hd0hc6v51obgdubbgxwbnhiywgdiueh.apps.googleusercontent.com" />
137    </platform>
138    <plugin name="cordova-plugin-whitelist" spec="1.3.5" />
139    <plugin name="cordova-plugin-statusbar" spec="2.4.3" />
140    <plugin name="cordova-plugin-device" spec="2.0.3" />
141    <plugin name="cordova-plugin-splashscreen" spec="6.0.0" />
142    <plugin name="cordova-plugin-ionic-webview" spec="5.0.0" />
143    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.2.0" />
144</widget>

Apps targeting Android 12 and higher are required to specify an explicit value for android:exported when the corresponding component has an intent filter defined. See https://developer.android.com/guide/topics/manifest/activity-element#exported for details.

ANSWER

Answered 2021-Nov-18 at 19:22

You can try like this in config.xml under android platform -

1<?xml version='1.0' encoding='utf-8'?>
2<widget id="com.likehub.sweetheart" version="1.1.64" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
3    <name>sweetheart</name>
4    <description>making love bird together</description>
5    <author email="mynamey9er@gmail.com" href="">likehub</author>
6    <content src="index.html" />
7    <access origin="*" />
8    <allow-intent href="http://*/*" />
9    <allow-intent href="https://*/*" />
10    <allow-intent href="tel:*" />
11    <allow-intent href="sms:*" />
12    <allow-intent href="mailto:*" />
13    <allow-intent href="geo:*" />
14    <preference name="AndroidXEnabled" value="true" />
15    <preference name="WebViewBounce" value="false" />
16    <preference name="UIWebViewBounce" value="false" />
17    <preference name="DisallowOverscroll" value="true" />
18    <preference name="LoadUrlTimeoutValue" value="700000" />
19    <preference name="ScrollEnabled" value="false" />
20    <preference name="SplashMaintainAspectRatio" value="true" />
21    <preference name="FadeSplashScreenDuration" value="1000" />
22    <preference name="FadeSplashScreen" value="true" />
23    <preference name="SplashShowOnlyFirstTime" value="false" />
24    <preference name="SplashScreen" value="screen" />
25    <preference name="SplashScreenDelay" value="5000" />
26    <preference name="AutoHideSplashScreen" value="true" />
27    <preference name="ShowSplashScreen" value="false" />
28    <preference name="ShowSplashScreenSpinner" value="false" />
29    <preference name="android-minSdkVersion" value="22" />
30    <preference name="BackupWebStorage" value="none" />
31    <preference name="Orientation" value="portrait" />
32    <preference name="AndroidPersistentFileLocation" value="Compatibility" />
33    <preference name="GradlePluginKotlinEnabled" value="true" />
34    <preference name="GradlePluginKotlinCodeStyle" value="official" />
35    <preference name="GradlePluginKotlinVersion" value="1.3.50" />
36    <preference name="AndroidLaunchMode" value="singleTask" />
37    <feature name="StatusBar">
38        <param name="ios-package" onload="true" value="CDVStatusBar" />
39    </feature>
40    <platform  name="android">
41        <preference name="android-targetSdkVersion" value="31" />
42        <edit-config  file="app/src/main/AndroidManifest.xml" mode="merge" android:exported="true" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
43            <application android:usesCleartextTraffic="true" />
44            <application android:networkSecurityConfig="@xml/network_security_config" />
45            
46            <intent-filter>
47                <action  android:name="MainActivity" android:exported="false"/>
48                <category android:name="android.intent.category.DEFAULT" />
49            </intent-filter>
50        </edit-config>
51        <resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
52        <allow-intent href="market:*" />
53        <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
54        <icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
55        <icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
56        <icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
57        <icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
58        <icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
59        <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
60        <splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
61        <splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
62        <splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
63        <splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
64        <splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
65        <splash density="ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
66        <splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
67        <splash density="mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
68        <splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
69        <splash density="hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
70        <splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
71        <splash density="xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
72        <splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
73        <splash density="xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
74        <splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
75        <splash density="xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
76        <splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
77    </platform>
78    <platform name="ios">
79        <allow-intent href="itms:*" />
80        <allow-intent href="itms-apps:*" />
81        <icon height="57" src="resources/ios/icon/icon.png" width="57" />
82        <icon height="114" src="resources/ios/icon/icon@2x.png" width="114" />
83        <icon height="29" src="resources/ios/icon/icon-small.png" width="29" />
84        <icon height="58" src="resources/ios/icon/icon-small@2x.png" width="58" />
85        <icon height="87" src="resources/ios/icon/icon-small@3x.png" width="87" />
86        <icon height="20" src="resources/ios/icon/icon-20.png" width="20" />
87        <icon height="40" src="resources/ios/icon/icon-20@2x.png" width="40" />
88        <icon height="60" src="resources/ios/icon/icon-20@3x.png" width="60" />
89        <icon height="48" src="resources/ios/icon/icon-24@2x.png" width="48" />
90        <icon height="55" src="resources/ios/icon/icon-27.5@2x.png" width="55" />
91        <icon height="29" src="resources/ios/icon/icon-29.png" width="29" />
92        <icon height="58" src="resources/ios/icon/icon-29@2x.png" width="58" />
93        <icon height="87" src="resources/ios/icon/icon-29@3x.png" width="87" />
94        <icon height="40" src="resources/ios/icon/icon-40.png" width="40" />
95        <icon height="80" src="resources/ios/icon/icon-40@2x.png" width="80" />
96        <icon height="120" src="resources/ios/icon/icon-40@3x.png" width="120" />
97        <icon height="88" src="resources/ios/icon/icon-44@2x.png" width="88" />
98        <icon height="50" src="resources/ios/icon/icon-50.png" width="50" />
99        <icon height="100" src="resources/ios/icon/icon-50@2x.png" width="100" />
100        <icon height="60" src="resources/ios/icon/icon-60.png" width="60" />
101        <icon height="120" src="resources/ios/icon/icon-60@2x.png" width="120" />
102        <icon height="180" src="resources/ios/icon/icon-60@3x.png" width="180" />
103        <icon height="72" src="resources/ios/icon/icon-72.png" width="72" />
104        <icon height="144" src="resources/ios/icon/icon-72@2x.png" width="144" />
105        <icon height="76" src="resources/ios/icon/icon-76.png" width="76" />
106        <icon height="152" src="resources/ios/icon/icon-76@2x.png" width="152" />
107        <icon height="167" src="resources/ios/icon/icon-83.5@2x.png" width="167" />
108        <icon height="172" src="resources/ios/icon/icon-86@2x.png" width="172" />
109        <icon height="196" src="resources/ios/icon/icon-98@2x.png" width="196" />
110        <icon height="1024" src="resources/ios/icon/icon-1024.png" width="1024" />
111        <splash height="480" src="resources/ios/splash/Default~iphone.png" width="320" />
112        <splash height="960" src="resources/ios/splash/Default@2x~iphone.png" width="640" />
113        <splash height="1024" src="resources/ios/splash/Default-Portrait~ipad.png" width="768" />
114        <splash height="768" src="resources/ios/splash/Default-Landscape~ipad.png" width="1024" />
115        <splash height="1125" src="resources/ios/splash/Default-Landscape-2436h.png" width="2436" />
116        <splash height="1242" src="resources/ios/splash/Default-Landscape-736h.png" width="2208" />
117        <splash height="2048" src="resources/ios/splash/Default-Portrait@2x~ipad.png" width="1536" />
118        <splash height="1536" src="resources/ios/splash/Default-Landscape@2x~ipad.png" width="2048" />
119        <splash height="2732" src="resources/ios/splash/Default-Portrait@~ipadpro.png" width="2048" />
120        <splash height="2048" src="resources/ios/splash/Default-Landscape@~ipadpro.png" width="2732" />
121        <splash height="1136" src="resources/ios/splash/Default-568h@2x~iphone.png" width="640" />
122        <splash height="1334" src="resources/ios/splash/Default-667h.png" width="750" />
123        <splash height="2208" src="resources/ios/splash/Default-736h.png" width="1242" />
124        <splash height="2436" src="resources/ios/splash/Default-2436h.png" width="1125" />
125        <splash height="2732" src="resources/ios/splash/Default@2x~universal~anyany.png" width="2732" />
126        <icon height="216" src="resources/ios/icon/icon-108@2x.png" width="216" />
127        <splash height="2688" src="resources/ios/splash/Default-2688h~iphone.png" width="1242" />
128        <splash height="1242" src="resources/ios/splash/Default-Landscape-2688h~iphone.png" width="2688" />
129        <splash height="1792" src="resources/ios/splash/Default-1792h~iphone.png" width="828" />
130        <splash height="828" src="resources/ios/splash/Default-Landscape-1792h~iphone.png" width="1792" />
131    </platform>
132    <plugin name="cordova-plugin-googleplus" spec="^8.4.0">
133        <variable name="WEB_APPLICATION_CLIENT_ID" value="0000000000000-wwwwwwwmkv51oxxxxxxxxxxx.apps.googleusercontent.co" />
134    </plugin>
135    <platform name="android">
136        <preference name="GoogleAndroidClientId" value="888809hhju-i9hd0hc6v51obgdubbgxwbnhiywgdiueh.apps.googleusercontent.com" />
137    </platform>
138    <plugin name="cordova-plugin-whitelist" spec="1.3.5" />
139    <plugin name="cordova-plugin-statusbar" spec="2.4.3" />
140    <plugin name="cordova-plugin-device" spec="2.0.3" />
141    <plugin name="cordova-plugin-splashscreen" spec="6.0.0" />
142    <plugin name="cordova-plugin-ionic-webview" spec="5.0.0" />
143    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.2.0" />
144</widget><edit-config
145  file="app/src/main/AndroidManifest.xml"
146  target="/manifest/application/activity[@android:name='MainActivity']"
147  mode="merge">
148    <activity android:exported="true"/>
149</edit-config>
150

Make sure to target the file and the activity's name properly.

Due to merge mode, android:exported="true" will be added to target activity element. This will replace the values if the it is already exist in the target element.

Source https://stackoverflow.com/questions/68678008

QUESTION

How to Ensure only one account can sign into flutter app from one phone

Asked 2022-Mar-30 at 11:51

Good day all, I am building an app in flutter and I use firebase as the backend. I allow users register and sign into the app using their phone number (and then a password). However, I want to add an extra layer of uniqueness to the registration/login flow.

What I mean is that, I only want one a maximum of one account to be reachable from one device. If person A creates an account on phone A, they can only ever use the app from phone A. Person A should not be able to log into their account from phone B.

I do not believe an sms two factor is enough for this because person A can share the two factor code with person B. Person B would then be able to login to Person A's account on phone B because they have person A's phone number and 2 factor code.

Is there a way of implementing this for a flutter app running on firebase?

ANSWER

Answered 2022-Mar-30 at 11:51

You can try saving the unique device ID of the user upon registration then you can check on login whether the user is on that specific device. For getting the unique device ID, you can check here.

Source https://stackoverflow.com/questions/71676592

QUESTION

How do I add a dropdown menu that when you select an option and click send it shows the option in the email?

Asked 2022-Mar-12 at 04:29

I have a website that I am making and I am adding a email portion that emails me their email and their message. I want to add another section that is a dropdown. It will have the three different pricing options, basic, pro, and premium. Then, whichever option they selected is put into the email so I can see it at the bottom of it. here is the code I have so far:

1<form action="https://postmail.invotes.com/send"
2    method="post" id="email_form">
3
4    <input type="text" name="subject" placeholder="Email" />
5    <textarea name="text" placeholder="Message">
6      
7    </textarea>
8    <input type="hidden" name="access_token" value="0i7j9jp18jinjtx8mhlqvg8k" />
9      <!-- return urls can be fully qualified -OR-
10         start with / for root relative -OR-
11         start with . for url relative --> 
12    <input type="hidden" name="success_url" value=".?message=Email+Successfully+Sent%21&isError=0" />
13    <input type="hidden" name="error_url" value=".?message=Email+could+not+be+sent.&isError=1" />
14   
15
16    <!-- set the reply-to address -->
17    <!-- <input type="text" name="reply_to"
18                placeholder="Your Email" /> -->
19
20    <!-- to append extra fields, use the extra_ prefix.
21        Entries will be appended to your message body. -->
22    <!-- <input type="text" name="extra_phone_number"
23                placeholder="Phone Number" /> -->
24
25    <!-- to split your message into 160 chars
26         for an sms gateway -->
27    <!-- <input type="hidden"
28                name="sms_format" value="true" /> -->
29   
30    <input id="submit_form" type="submit" value="Send" />
31    <!-- not required, but we'd appreciate it if you'd link to us somewhere on your site -->
32    <p>Powered by <a href="https://postmail.invotes.com" target="_blank">PostMail</a></p>
33</form>
34     
35<!-- optional, prevents the submit button from being pressed more than once -->
36<script>
37    var submitButton = document.getElementById("submit_form");
38    var form = document.getElementById("email_form");
39    form.addEventListener("submit", function (e) {
40        setTimeout(function() {
41            submitButton.value = "Sending...";
42            submitButton.disabled = true;
43        }, 1);
44    });
45</script> 
46<style>/* Style inputs with type="text", select elements and textareas */
47input[type=text], select, textarea {
48   width: 100%; /* Full width */
49   padding: 12px; /* Some padding */ 
50   border: 1px solid #ccc; /* Gray border */
51   border-radius: 4px; /* Rounded borders */
52   box-sizing: border-box; /* Make sure that padding and width stays in place */
53  margin-top: 6px; /* Add a top margin */
54  margin-bottom: 16px; /* Bottom margin */
55  resize: vertical /* Allow the user to vertically resize the textarea (not horizontally) */
56 }
57
58 /* Style the submit button with a specific background color etc */
59input[type=submit] {
60  background-color: #04AA6D;
61   color: white;
62   padding: 12px 20px;
63   border: none;
64   border-radius: 4px;
65   cursor: pointer;
66 }
67 /* When moving the mouse over the submit button, add a darker green color */
68 input[type=submit]:hover {
69   background-color: #45a049;
70 }
71
72 /* Add a background color and some padding around the form */
73 .container {
74   border-radius: 5px;
75   background-color: #f2f2f2;
76   padding: 20px;
77 }</style>
78

ANSWER

Answered 2022-Mar-12 at 04:29

You can have your dropdown inside the form, then when it's time to submit, intercept that and append the dropdown value to the user's text.

For this SOLUTION, I do the interception by not having a button that sends the form to the server directly. Instead a script is called on it's behalf to then append the dropdown value.

All other explanations are in the code comments.

1<form action="https://postmail.invotes.com/send"
2    method="post" id="email_form">
3
4    <input type="text" name="subject" placeholder="Email" />
5    <textarea name="text" placeholder="Message">
6      
7    </textarea>
8    <input type="hidden" name="access_token" value="0i7j9jp18jinjtx8mhlqvg8k" />
9      <!-- return urls can be fully qualified -OR-
10         start with / for root relative -OR-
11         start with . for url relative --> 
12    <input type="hidden" name="success_url" value=".?message=Email+Successfully+Sent%21&isError=0" />
13    <input type="hidden" name="error_url" value=".?message=Email+could+not+be+sent.&isError=1" />
14   
15
16    <!-- set the reply-to address -->
17    <!-- <input type="text" name="reply_to"
18                placeholder="Your Email" /> -->
19
20    <!-- to append extra fields, use the extra_ prefix.
21        Entries will be appended to your message body. -->
22    <!-- <input type="text" name="extra_phone_number"
23                placeholder="Phone Number" /> -->
24
25    <!-- to split your message into 160 chars
26         for an sms gateway -->
27    <!-- <input type="hidden"
28                name="sms_format" value="true" /> -->
29   
30    <input id="submit_form" type="submit" value="Send" />
31    <!-- not required, but we'd appreciate it if you'd link to us somewhere on your site -->
32    <p>Powered by <a href="https://postmail.invotes.com" target="_blank">PostMail</a></p>
33</form>
34     
35<!-- optional, prevents the submit button from being pressed more than once -->
36<script>
37    var submitButton = document.getElementById("submit_form");
38    var form = document.getElementById("email_form");
39    form.addEventListener("submit", function (e) {
40        setTimeout(function() {
41            submitButton.value = "Sending...";
42            submitButton.disabled = true;
43        }, 1);
44    });
45</script> 
46<style>/* Style inputs with type="text", select elements and textareas */
47input[type=text], select, textarea {
48   width: 100%; /* Full width */
49   padding: 12px; /* Some padding */ 
50   border: 1px solid #ccc; /* Gray border */
51   border-radius: 4px; /* Rounded borders */
52   box-sizing: border-box; /* Make sure that padding and width stays in place */
53  margin-top: 6px; /* Add a top margin */
54  margin-bottom: 16px; /* Bottom margin */
55  resize: vertical /* Allow the user to vertically resize the textarea (not horizontally) */
56 }
57
58 /* Style the submit button with a specific background color etc */
59input[type=submit] {
60  background-color: #04AA6D;
61   color: white;
62   padding: 12px 20px;
63   border: none;
64   border-radius: 4px;
65   cursor: pointer;
66 }
67 /* When moving the mouse over the submit button, add a darker green color */
68 input[type=submit]:hover {
69   background-color: #45a049;
70 }
71
72 /* Add a background color and some padding around the form */
73 .container {
74   border-radius: 5px;
75   background-color: #f2f2f2;
76   padding: 20px;
77 }</style>
78function validateThenSend() {
79    // Write a script that appends the "plan" to the message body, then sends the form to the server.
80  
81    // Optional validation code
82    // ...
83    
84    // If validated, then continue:
85    
86    // Append the user selected Plan to the textarea.
87    
88    var curText = document.getElementById("text").value;
89    curText += "\n\nPLAN: " + document.getElementById("plans").value;
90    document.getElementById("text").value = curText;
91    
92    // Submit the form
93    
94    // Uncomment the next line for the actual Send.
95    // I have it commented for testing here in SO.
96    
97    // document.getElementById("email_form").submit();
98    
99}
1<form action="https://postmail.invotes.com/send"
2    method="post" id="email_form">
3
4    <input type="text" name="subject" placeholder="Email" />
5    <textarea name="text" placeholder="Message">
6      
7    </textarea>
8    <input type="hidden" name="access_token" value="0i7j9jp18jinjtx8mhlqvg8k" />
9      <!-- return urls can be fully qualified -OR-
10         start with / for root relative -OR-
11         start with . for url relative --> 
12    <input type="hidden" name="success_url" value=".?message=Email+Successfully+Sent%21&isError=0" />
13    <input type="hidden" name="error_url" value=".?message=Email+could+not+be+sent.&isError=1" />
14   
15
16    <!-- set the reply-to address -->
17    <!-- <input type="text" name="reply_to"
18                placeholder="Your Email" /> -->
19
20    <!-- to append extra fields, use the extra_ prefix.
21        Entries will be appended to your message body. -->
22    <!-- <input type="text" name="extra_phone_number"
23                placeholder="Phone Number" /> -->
24
25    <!-- to split your message into 160 chars
26         for an sms gateway -->
27    <!-- <input type="hidden"
28                name="sms_format" value="true" /> -->
29   
30    <input id="submit_form" type="submit" value="Send" />
31    <!-- not required, but we'd appreciate it if you'd link to us somewhere on your site -->
32    <p>Powered by <a href="https://postmail.invotes.com" target="_blank">PostMail</a></p>
33</form>
34     
35<!-- optional, prevents the submit button from being pressed more than once -->
36<script>
37    var submitButton = document.getElementById("submit_form");
38    var form = document.getElementById("email_form");
39    form.addEventListener("submit", function (e) {
40        setTimeout(function() {
41            submitButton.value = "Sending...";
42            submitButton.disabled = true;
43        }, 1);
44    });
45</script> 
46<style>/* Style inputs with type="text", select elements and textareas */
47input[type=text], select, textarea {
48   width: 100%; /* Full width */
49   padding: 12px; /* Some padding */ 
50   border: 1px solid #ccc; /* Gray border */
51   border-radius: 4px; /* Rounded borders */
52   box-sizing: border-box; /* Make sure that padding and width stays in place */
53  margin-top: 6px; /* Add a top margin */
54  margin-bottom: 16px; /* Bottom margin */
55  resize: vertical /* Allow the user to vertically resize the textarea (not horizontally) */
56 }
57
58 /* Style the submit button with a specific background color etc */
59input[type=submit] {
60  background-color: #04AA6D;
61   color: white;
62   padding: 12px 20px;
63   border: none;
64   border-radius: 4px;
65   cursor: pointer;
66 }
67 /* When moving the mouse over the submit button, add a darker green color */
68 input[type=submit]:hover {
69   background-color: #45a049;
70 }
71
72 /* Add a background color and some padding around the form */
73 .container {
74   border-radius: 5px;
75   background-color: #f2f2f2;
76   padding: 20px;
77 }</style>
78function validateThenSend() {
79    // Write a script that appends the "plan" to the message body, then sends the form to the server.
80  
81    // Optional validation code
82    // ...
83    
84    // If validated, then continue:
85    
86    // Append the user selected Plan to the textarea.
87    
88    var curText = document.getElementById("text").value;
89    curText += "\n\nPLAN: " + document.getElementById("plans").value;
90    document.getElementById("text").value = curText;
91    
92    // Submit the form
93    
94    // Uncomment the next line for the actual Send.
95    // I have it commented for testing here in SO.
96    
97    // document.getElementById("email_form").submit();
98    
99}<form action="https://postmail.invotes.com/send"
100    method="post" id="email_form">
101
102    <!-- Add in your dropdown, and give it an id but it wont need a name attribute -->
103    
104    <select id="plans">
105        <option value="Plan 1">Plan 1</option>
106        <option value="Plan 2">Plan 2</option>
107        <option value="Plan 3">Plan 3</option>
108    </select>
109    
110    <br/>
111    <br/>
112    
113    <input type="text" name="subject" placeholder="Email" />
114    
115    <br/>
116    <br/>
117    
118    
119    <!-- Give the textarea an id -->
120    <textarea name="text" placeholder="Message" id="text" cols=30 rows=10></textarea>
121    
122    <input type="hidden" name="access_token" value="0i7j9jp18jinjtx8mhlqvg8k" />
123      <!-- return urls can be fully qualified -OR-
124         start with / for root relative -OR-
125         start with . for url relative --> 
126    <input type="hidden" name="success_url" value=".?message=Email+Successfully+Sent%21&isError=0" />
127    <input type="hidden" name="error_url" value=".?message=Email+could+not+be+sent.&isError=1" />
128   
129
130    <!-- set the reply-to address -->
131    <!-- <input type="text" name="reply_to"
132                placeholder="Your Email" /> -->
133
134    <!-- to append extra fields, use the extra_ prefix.
135        Entries will be appended to your message body. -->
136    <!-- <input type="text" name="extra_phone_number"
137                placeholder="Phone Number" /> -->
138
139    <!-- to split your message into 160 chars
140         for an sms gateway -->
141    <!-- <input type="hidden"
142                name="sms_format" value="true" /> -->
143   
144    <!-- hide your Send button or simply remove it -->
145    <input id="submit_form" type="submit" value="Send" style="display:none"/> 
146    
147    <!-- Make a fake Send button the user will see. -->
148    <button type="button" onclick="validateThenSend()">Send</button>
149    
150    <!-- not required, but we'd appreciate it if you'd link to us somewhere on your site -->
151    <p>Powered by <a href="https://postmail.invotes.com" target="_blank">PostMail</a></p>
152</form>

Source https://stackoverflow.com/questions/71445669

QUESTION

java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest;

Asked 2022-Feb-25 at 23:22

It was working fine before I have done nothing, no packages update, no gradle update no nothing just created new build and this error occurs. but for some team members the error occur after gradle sync.

The issue is that build is generating successfully without any error but when opens the app it suddenly gets crash (in both debug and release mode)

Error

1    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
2        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
3            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
4            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
5            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
6            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
7            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8            at java.lang.Thread.run(Thread.java:923)
9

gradle-wrapper.properties

1    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
2        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
3            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
4            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
5            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
6            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
7            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8            at java.lang.Thread.run(Thread.java:923)
9distributionBase=GRADLE_USER_HOME
10distributionPath=wrapper/dists
11distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
12zipStoreBase=GRADLE_USER_HOME
13zipStorePath=wrapper/dists
14

build.gradle

1    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
2        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
3            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
4            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
5            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
6            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
7            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8            at java.lang.Thread.run(Thread.java:923)
9distributionBase=GRADLE_USER_HOME
10distributionPath=wrapper/dists
11distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
12zipStoreBase=GRADLE_USER_HOME
13zipStorePath=wrapper/dists
14// Top-level build file where you can add configuration options common to all sub-projects/modules.
15
16buildscript {
17  ext {
18      buildToolsVersion = "30.0.2"
19      minSdkVersion = 21
20      compileSdkVersion = 30
21      targetSdkVersion = 30
22      ndkVersion = "21.4.7075529"
23  }
24  repositories {
25      google()
26      mavenCentral()
27      jcenter()
28      // maven {
29      //    url 'https://maven.fabric.io/public'
30      // }
31      maven { url "https://www.jitpack.io" }
32  }
33  dependencies {
34      classpath("com.android.tools.build:gradle:4.2.2")
35      classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
36      // Add the Fabric Crashlytics plugin.
37      // classpath 'io.fabric.tools:gradle:1.31.2'
38      // firebase performance sdk
39      classpath 'com.google.firebase:perf-plugin:1.4.0'
40      classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
41
42
43      // NOTE: Do not place your application dependencies here; they belong
44      // in the individual module build.gradle files
45  }
46}
47
48allprojects {
49  repositories {
50      mavenCentral()
51      mavenLocal()
52      maven {
53          // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
54          url("$rootDir/../node_modules/react-native/android")
55      }
56      maven {
57          // Android JSC is installed from npm
58          url("$rootDir/../node_modules/jsc-android/dist")
59      }
60
61      google()
62      jcenter()
63      maven { url 'https://www.jitpack.io' }
64  }
65}
66
67
68subprojects {
69  afterEvaluate {project ->
70      if (project.hasProperty("android")) {
71          android {
72              buildToolsVersion "28.0.3"
73              compileSdkVersion 28
74          }
75      }
76  }
77}
78
79subprojects {
80  afterEvaluate {project ->
81      if (project.hasProperty("android")) {
82          android {
83              compileSdkVersion 29
84              buildToolsVersion '29.0.3'
85          }
86      }
87  }
88}
89

packages

1    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
2        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
3            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
4            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
5            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
6            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
7            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8            at java.lang.Thread.run(Thread.java:923)
9distributionBase=GRADLE_USER_HOME
10distributionPath=wrapper/dists
11distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
12zipStoreBase=GRADLE_USER_HOME
13zipStorePath=wrapper/dists
14// Top-level build file where you can add configuration options common to all sub-projects/modules.
15
16buildscript {
17  ext {
18      buildToolsVersion = "30.0.2"
19      minSdkVersion = 21
20      compileSdkVersion = 30
21      targetSdkVersion = 30
22      ndkVersion = "21.4.7075529"
23  }
24  repositories {
25      google()
26      mavenCentral()
27      jcenter()
28      // maven {
29      //    url 'https://maven.fabric.io/public'
30      // }
31      maven { url "https://www.jitpack.io" }
32  }
33  dependencies {
34      classpath("com.android.tools.build:gradle:4.2.2")
35      classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
36      // Add the Fabric Crashlytics plugin.
37      // classpath 'io.fabric.tools:gradle:1.31.2'
38      // firebase performance sdk
39      classpath 'com.google.firebase:perf-plugin:1.4.0'
40      classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
41
42
43      // NOTE: Do not place your application dependencies here; they belong
44      // in the individual module build.gradle files
45  }
46}
47
48allprojects {
49  repositories {
50      mavenCentral()
51      mavenLocal()
52      maven {
53          // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
54          url("$rootDir/../node_modules/react-native/android")
55      }
56      maven {
57          // Android JSC is installed from npm
58          url("$rootDir/../node_modules/jsc-android/dist")
59      }
60
61      google()
62      jcenter()
63      maven { url 'https://www.jitpack.io' }
64  }
65}
66
67
68subprojects {
69  afterEvaluate {project ->
70      if (project.hasProperty("android")) {
71          android {
72              buildToolsVersion "28.0.3"
73              compileSdkVersion 28
74          }
75      }
76  }
77}
78
79subprojects {
80  afterEvaluate {project ->
81      if (project.hasProperty("android")) {
82          android {
83              compileSdkVersion 29
84              buildToolsVersion '29.0.3'
85          }
86      }
87  }
88}
89"dependencies": {
90  "@eva-design/eva": "^2.1.0",
91  "@react-native-async-storage/async-storage": "^1.15.14",
92  "@react-native-community/blur": "^3.6.0",
93  "@react-native-community/checkbox": "^0.5.0",
94  "@react-native-community/netinfo": "^6.0.1",
95  "@react-native-community/toolbar-android": "^0.1.0-rc.2",
96  "@react-native-firebase/analytics": "^10.3.1",
97  "@react-native-firebase/app": "^10.3.0",
98  "@react-native-firebase/auth": "^10.3.1",
99  "@react-native-firebase/crashlytics": "^10.3.1",
100  "@react-native-firebase/dynamic-links": "^10.3.1",
101  "@react-native-firebase/firestore": "^10.3.1",
102  "@react-native-firebase/iid": "^10.3.1",
103  "@react-native-firebase/in-app-messaging": "^10.3.1",
104  "@react-native-firebase/messaging": "^10.3.1",
105  "@react-native-firebase/perf": "^10.3.1",
106  "@react-native-firebase/remote-config": "^10.3.1",
107  "@react-native-firebase/storage": "^10.3.1",
108  "@react-native-picker/picker": "^2.1.0",
109  "@react-navigation/bottom-tabs": "^6.0.9",
110  "@react-navigation/native": "^6.0.6",
111  "@react-navigation/stack": "^6.0.11",
112  "@types/react-native": "^0.65.5",
113  "@ui-kitten/components": "^5.1.0",
114  "axios": "^0.19.0",
115  "i18n-js": "^3.5.1",
116  "moment": "^2.24.0",
117  "native-base": "2.13.8",
118  "react": "17.0.2",
119  "react-content-loader": "^4.3.4",
120  "react-native": "0.66.0",
121  "react-native-actions-sheet": "^0.5.6",
122  "react-native-adjust": "^4.28.0",
123  "react-native-amplitude-analytics": "^0.2.7",
124  "react-native-animatable": "^1.3.3",
125  "react-native-code-push": "^7.0.4",
126  "react-native-config": "^1.3.3",
127  "react-native-contacts": "^5.0.7",
128  "react-native-dots-pagination": "^0.2.0",
129  "react-native-fbsdk-next": "^6.2.0",
130  "react-native-fingerprint-scanner": "^6.0.0",
131  "react-native-floating-action": "^1.22.0",
132  "react-native-geocoding": "^0.4.0",
133  "react-native-geolocation-service": "^5.2.0",
134  "react-native-gesture-handler": "^1.5.2",
135  "react-native-get-random-values": "^1.4.0",
136  "react-native-html-to-pdf-lite": "^0.11.0",
137  "react-native-image-base64": "^0.1.4",
138  "react-native-image-pan-zoom": "^2.1.11",
139  "react-native-image-picker": "^4.1.2",
140  "react-native-image-resizer": "^1.2.0",
141  "react-native-in-app-review": "^2.1.7",
142  "react-native-linear-gradient": "^2.5.6",
143  "react-native-loading-spinner-overlay": "^1.1.0",
144  "react-native-material-menu": "^1.0.0",
145  "react-native-material-textfield": "^0.16.1",
146  "react-native-modal": "^13.0.0",
147  "react-native-phone-call": "^1.0.9",
148  "react-native-ratings": "^7.3.0",
149  "react-native-reanimated": "^1.13.0",
150  "react-native-safe-area-context": "^3.3.2",
151  "react-native-screens": "^3.9.0",
152  "react-native-share": "^7.2.1",
153  "react-native-smooth-pincode-input": "^1.0.9",
154  "react-native-sms-retriever": "https://github.com/sarmad1995/react-native-sms-retriever.git",
155  "react-native-snap-carousel": "^3.9.1",
156  "react-native-splash-screen": "^3.2.0",
157  "react-native-svg": "^12.1.1",
158  "react-native-version-check": "^3.4.2",
159  "react-native-version-number": "^0.3.6",
160  "react-native-view-shot": "^3.1.2",
161  "react-native-walkthrough-tooltip": "^1.3.0",
162  "react-redux": "^7.1.3",
163  "redux": "^4.0.4",
164  "redux-logger": "^3.0.6",
165  "redux-persist": "^6.0.0",
166  "redux-thunk": "^2.3.0",
167  "rn-fetch-blob": "^0.12.0",
168  "urbanairship-react-native": "^12.0.0",
169  "uuid": "^8.3.0"
170},
171

ANSWER

Answered 2022-Feb-25 at 23:22

We have fixed the issue by replacing

1    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
2        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
3            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
4            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
5            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
6            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
7            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8            at java.lang.Thread.run(Thread.java:923)
9distributionBase=GRADLE_USER_HOME
10distributionPath=wrapper/dists
11distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
12zipStoreBase=GRADLE_USER_HOME
13zipStorePath=wrapper/dists
14// Top-level build file where you can add configuration options common to all sub-projects/modules.
15
16buildscript {
17  ext {
18      buildToolsVersion = "30.0.2"
19      minSdkVersion = 21
20      compileSdkVersion = 30
21      targetSdkVersion = 30
22      ndkVersion = "21.4.7075529"
23  }
24  repositories {
25      google()
26      mavenCentral()
27      jcenter()
28      // maven {
29      //    url 'https://maven.fabric.io/public'
30      // }
31      maven { url "https://www.jitpack.io" }
32  }
33  dependencies {
34      classpath("com.android.tools.build:gradle:4.2.2")
35      classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
36      // Add the Fabric Crashlytics plugin.
37      // classpath 'io.fabric.tools:gradle:1.31.2'
38      // firebase performance sdk
39      classpath 'com.google.firebase:perf-plugin:1.4.0'
40      classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
41
42
43      // NOTE: Do not place your application dependencies here; they belong
44      // in the individual module build.gradle files
45  }
46}
47
48allprojects {
49  repositories {
50      mavenCentral()
51      mavenLocal()
52      maven {
53          // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
54          url("$rootDir/../node_modules/react-native/android")
55      }
56      maven {
57          // Android JSC is installed from npm
58          url("$rootDir/../node_modules/jsc-android/dist")
59      }
60
61      google()
62      jcenter()
63      maven { url 'https://www.jitpack.io' }
64  }
65}
66
67
68subprojects {
69  afterEvaluate {project ->
70      if (project.hasProperty("android")) {
71          android {
72              buildToolsVersion "28.0.3"
73              compileSdkVersion 28
74          }
75      }
76  }
77}
78
79subprojects {
80  afterEvaluate {project ->
81      if (project.hasProperty("android")) {
82          android {
83              compileSdkVersion 29
84              buildToolsVersion '29.0.3'
85          }
86      }
87  }
88}
89"dependencies": {
90  "@eva-design/eva": "^2.1.0",
91  "@react-native-async-storage/async-storage": "^1.15.14",
92  "@react-native-community/blur": "^3.6.0",
93  "@react-native-community/checkbox": "^0.5.0",
94  "@react-native-community/netinfo": "^6.0.1",
95  "@react-native-community/toolbar-android": "^0.1.0-rc.2",
96  "@react-native-firebase/analytics": "^10.3.1",
97  "@react-native-firebase/app": "^10.3.0",
98  "@react-native-firebase/auth": "^10.3.1",
99  "@react-native-firebase/crashlytics": "^10.3.1",
100  "@react-native-firebase/dynamic-links": "^10.3.1",
101  "@react-native-firebase/firestore": "^10.3.1",
102  "@react-native-firebase/iid": "^10.3.1",
103  "@react-native-firebase/in-app-messaging": "^10.3.1",
104  "@react-native-firebase/messaging": "^10.3.1",
105  "@react-native-firebase/perf": "^10.3.1",
106  "@react-native-firebase/remote-config": "^10.3.1",
107  "@react-native-firebase/storage": "^10.3.1",
108  "@react-native-picker/picker": "^2.1.0",
109  "@react-navigation/bottom-tabs": "^6.0.9",
110  "@react-navigation/native": "^6.0.6",
111  "@react-navigation/stack": "^6.0.11",
112  "@types/react-native": "^0.65.5",
113  "@ui-kitten/components": "^5.1.0",
114  "axios": "^0.19.0",
115  "i18n-js": "^3.5.1",
116  "moment": "^2.24.0",
117  "native-base": "2.13.8",
118  "react": "17.0.2",
119  "react-content-loader": "^4.3.4",
120  "react-native": "0.66.0",
121  "react-native-actions-sheet": "^0.5.6",
122  "react-native-adjust": "^4.28.0",
123  "react-native-amplitude-analytics": "^0.2.7",
124  "react-native-animatable": "^1.3.3",
125  "react-native-code-push": "^7.0.4",
126  "react-native-config": "^1.3.3",
127  "react-native-contacts": "^5.0.7",
128  "react-native-dots-pagination": "^0.2.0",
129  "react-native-fbsdk-next": "^6.2.0",
130  "react-native-fingerprint-scanner": "^6.0.0",
131  "react-native-floating-action": "^1.22.0",
132  "react-native-geocoding": "^0.4.0",
133  "react-native-geolocation-service": "^5.2.0",
134  "react-native-gesture-handler": "^1.5.2",
135  "react-native-get-random-values": "^1.4.0",
136  "react-native-html-to-pdf-lite": "^0.11.0",
137  "react-native-image-base64": "^0.1.4",
138  "react-native-image-pan-zoom": "^2.1.11",
139  "react-native-image-picker": "^4.1.2",
140  "react-native-image-resizer": "^1.2.0",
141  "react-native-in-app-review": "^2.1.7",
142  "react-native-linear-gradient": "^2.5.6",
143  "react-native-loading-spinner-overlay": "^1.1.0",
144  "react-native-material-menu": "^1.0.0",
145  "react-native-material-textfield": "^0.16.1",
146  "react-native-modal": "^13.0.0",
147  "react-native-phone-call": "^1.0.9",
148  "react-native-ratings": "^7.3.0",
149  "react-native-reanimated": "^1.13.0",
150  "react-native-safe-area-context": "^3.3.2",
151  "react-native-screens": "^3.9.0",
152  "react-native-share": "^7.2.1",
153  "react-native-smooth-pincode-input": "^1.0.9",
154  "react-native-sms-retriever": "https://github.com/sarmad1995/react-native-sms-retriever.git",
155  "react-native-snap-carousel": "^3.9.1",
156  "react-native-splash-screen": "^3.2.0",
157  "react-native-svg": "^12.1.1",
158  "react-native-version-check": "^3.4.2",
159  "react-native-version-number": "^0.3.6",
160  "react-native-view-shot": "^3.1.2",
161  "react-native-walkthrough-tooltip": "^1.3.0",
162  "react-redux": "^7.1.3",
163  "redux": "^4.0.4",
164  "redux-logger": "^3.0.6",
165  "redux-persist": "^6.0.0",
166  "redux-thunk": "^2.3.0",
167  "rn-fetch-blob": "^0.12.0",
168  "urbanairship-react-native": "^12.0.0",
169  "uuid": "^8.3.0"
170},
171implementation 'com.facebook.android:facebook-marketing:[4,5)'
172

by

1    E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #3
2        java.lang.NoSuchMethodError: No virtual method setSkipClientToken(Z)V in class Lcom/facebook/GraphRequest; or its super classes (declaration of 'com.facebook.GraphRequest' appears in /data/app/~~aLf3pfLySq5u7zpIAr2Hlg==/com.package-name-99h4GcP3GNx2sMs76AXGvA==/base.apk)
3            at com.facebook.marketing.internal.RemoteConfigManager.getRemoteConfigQueryResponse(RemoteConfigManager.java:87)
4            at com.facebook.marketing.internal.RemoteConfigManager.access$000(RemoteConfigManager.java:43)
5            at com.facebook.marketing.internal.RemoteConfigManager$1.run(RemoteConfigManager.java:64)
6            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
7            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
8            at java.lang.Thread.run(Thread.java:923)
9distributionBase=GRADLE_USER_HOME
10distributionPath=wrapper/dists
11distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-all.zip
12zipStoreBase=GRADLE_USER_HOME
13zipStorePath=wrapper/dists
14// Top-level build file where you can add configuration options common to all sub-projects/modules.
15
16buildscript {
17  ext {
18      buildToolsVersion = "30.0.2"
19      minSdkVersion = 21
20      compileSdkVersion = 30
21      targetSdkVersion = 30
22      ndkVersion = "21.4.7075529"
23  }
24  repositories {
25      google()
26      mavenCentral()
27      jcenter()
28      // maven {
29      //    url 'https://maven.fabric.io/public'
30      // }
31      maven { url "https://www.jitpack.io" }
32  }
33  dependencies {
34      classpath("com.android.tools.build:gradle:4.2.2")
35      classpath 'com.google.gms:google-services:4.2.0'  // Google Services plugin
36      // Add the Fabric Crashlytics plugin.
37      // classpath 'io.fabric.tools:gradle:1.31.2'
38      // firebase performance sdk
39      classpath 'com.google.firebase:perf-plugin:1.4.0'
40      classpath 'com.google.firebase:firebase-crashlytics-gradle:2.7.1'
41
42
43      // NOTE: Do not place your application dependencies here; they belong
44      // in the individual module build.gradle files
45  }
46}
47
48allprojects {
49  repositories {
50      mavenCentral()
51      mavenLocal()
52      maven {
53          // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
54          url("$rootDir/../node_modules/react-native/android")
55      }
56      maven {
57          // Android JSC is installed from npm
58          url("$rootDir/../node_modules/jsc-android/dist")
59      }
60
61      google()
62      jcenter()
63      maven { url 'https://www.jitpack.io' }
64  }
65}
66
67
68subprojects {
69  afterEvaluate {project ->
70      if (project.hasProperty("android")) {
71          android {
72              buildToolsVersion "28.0.3"
73              compileSdkVersion 28
74          }
75      }
76  }
77}
78
79subprojects {
80  afterEvaluate {project ->
81      if (project.hasProperty("android")) {
82          android {
83              compileSdkVersion 29
84              buildToolsVersion '29.0.3'
85          }
86      }
87  }
88}
89"dependencies": {
90  "@eva-design/eva": "^2.1.0",
91  "@react-native-async-storage/async-storage": "^1.15.14",
92  "@react-native-community/blur": "^3.6.0",
93  "@react-native-community/checkbox": "^0.5.0",
94  "@react-native-community/netinfo": "^6.0.1",
95  "@react-native-community/toolbar-android": "^0.1.0-rc.2",
96  "@react-native-firebase/analytics": "^10.3.1",
97  "@react-native-firebase/app": "^10.3.0",
98  "@react-native-firebase/auth": "^10.3.1",
99  "@react-native-firebase/crashlytics": "^10.3.1",
100  "@react-native-firebase/dynamic-links": "^10.3.1",
101  "@react-native-firebase/firestore": "^10.3.1",
102  "@react-native-firebase/iid": "^10.3.1",
103  "@react-native-firebase/in-app-messaging": "^10.3.1",
104  "@react-native-firebase/messaging": "^10.3.1",
105  "@react-native-firebase/perf": "^10.3.1",
106  "@react-native-firebase/remote-config": "^10.3.1",
107  "@react-native-firebase/storage": "^10.3.1",
108  "@react-native-picker/picker": "^2.1.0",
109  "@react-navigation/bottom-tabs": "^6.0.9",
110  "@react-navigation/native": "^6.0.6",
111  "@react-navigation/stack": "^6.0.11",
112  "@types/react-native": "^0.65.5",
113  "@ui-kitten/components": "^5.1.0",
114  "axios": "^0.19.0",
115  "i18n-js": "^3.5.1",
116  "moment": "^2.24.0",
117  "native-base": "2.13.8",
118  "react": "17.0.2",
119  "react-content-loader": "^4.3.4",
120  "react-native": "0.66.0",
121  "react-native-actions-sheet": "^0.5.6",
122  "react-native-adjust": "^4.28.0",
123  "react-native-amplitude-analytics": "^0.2.7",
124  "react-native-animatable": "^1.3.3",
125  "react-native-code-push": "^7.0.4",
126  "react-native-config": "^1.3.3",
127  "react-native-contacts": "^5.0.7",
128  "react-native-dots-pagination": "^0.2.0",
129  "react-native-fbsdk-next": "^6.2.0",
130  "react-native-fingerprint-scanner": "^6.0.0",
131  "react-native-floating-action": "^1.22.0",
132  "react-native-geocoding": "^0.4.0",
133  "react-native-geolocation-service": "^5.2.0",
134  "react-native-gesture-handler": "^1.5.2",
135  "react-native-get-random-values": "^1.4.0",
136  "react-native-html-to-pdf-lite": "^0.11.0",
137  "react-native-image-base64": "^0.1.4",
138  "react-native-image-pan-zoom": "^2.1.11",
139  "react-native-image-picker": "^4.1.2",
140  "react-native-image-resizer": "^1.2.0",
141  "react-native-in-app-review": "^2.1.7",
142  "react-native-linear-gradient": "^2.5.6",
143  "react-native-loading-spinner-overlay": "^1.1.0",
144  "react-native-material-menu": "^1.0.0",
145  "react-native-material-textfield": "^0.16.1",
146  "react-native-modal": "^13.0.0",
147  "react-native-phone-call": "^1.0.9",
148  "react-native-ratings": "^7.3.0",
149  "react-native-reanimated": "^1.13.0",
150  "react-native-safe-area-context": "^3.3.2",
151  "react-native-screens": "^3.9.0",
152  "react-native-share": "^7.2.1",
153  "react-native-smooth-pincode-input": "^1.0.9",
154  "react-native-sms-retriever": "https://github.com/sarmad1995/react-native-sms-retriever.git",
155  "react-native-snap-carousel": "^3.9.1",
156  "react-native-splash-screen": "^3.2.0",
157  "react-native-svg": "^12.1.1",
158  "react-native-version-check": "^3.4.2",
159  "react-native-version-number": "^0.3.6",
160  "react-native-view-shot": "^3.1.2",
161  "react-native-walkthrough-tooltip": "^1.3.0",
162  "react-redux": "^7.1.3",
163  "redux": "^4.0.4",
164  "redux-logger": "^3.0.6",
165  "redux-persist": "^6.0.0",
166  "redux-thunk": "^2.3.0",
167  "rn-fetch-blob": "^0.12.0",
168  "urbanairship-react-native": "^12.0.0",
169  "uuid": "^8.3.0"
170},
171implementation 'com.facebook.android:facebook-marketing:[4,5)'
172implementation 'com.facebook.android:facebook-marketing:latest.release'
173

in android/app/build.gradle file.

Posted this so someone out there facing the same problem will find the solution easily. It took me and my team around one and a half day to figure it out as there is no clear solution out there.

Solution Ref: here

Source https://stackoverflow.com/questions/71256006

QUESTION

How to auto fill OTP textfield on OTP code received from firebase in iOS, Swift? (WITHOUT TAPPING)

Asked 2022-Feb-20 at 18:21

I want to know a callback function that is automatically called and fill the OTP text field (after I receive the OTP code from firebase).

I have already tried: textfield.contentType = onetimecode.

But this is not what I am looking for, this just gives the otp code fetched from sms as a autocomplete. I am actually looking for a callback function that is auto fired after I receive OTP code on my phone.

I think picture makes it clear, I want to fill the textfield without tapping (keyboard placeholder thingy) the received OTP code.

OTP screen

ANSWER

Answered 2022-Feb-20 at 18:21

By design, iOS apps have no access to incoming SMS messages. There are many discussions out there on a similar topic.

The main reason for the restriction is privacy. There is no documented public API to receive a callback when SMS is received. If you try to hack iOS and listen for private notifications then might be your app will be rejected by the App Review team.

While doing research on this topic I found something interesting, you can create an extension that can receive incoming SMS and call events for the purpose of SPAM filtering. This type of extension is called the SMS and Call reporting extension in Apple's ecosystem. While looking at the documentation of this extension, at first glance I thought we can achieve the asked behavior if we can notify our host app about the incoming messages. But while scrolling to the end of the document I found that by design this extension has some additional restrictions:

  • The extension cannot share data with the host app.
  • The extension can't access the network directly.
  • The extension receives the event only if the sender's number is not on the contact list

additional restrictions

Anyways it's all about docs, I have not tried anything on the extension. What you can do is try to create an extension and see for other possible solutions.

Example:

1 bad solution in my mind is your extension call your server with the SMS content and then your server forward the SMS content in a silent push notification payload. When your app received the silent notification it serves the purpose of prefilling the field. But again this is not the intended purpose of the extension.

In my opinion, the best is what you have already achieved i.e. setting the text field's content type.

Source https://stackoverflow.com/questions/71153222

QUESTION

Why is pattern matching ok in scala but using instanceof is a sign of bad code in Java

Asked 2022-Feb-02 at 18:58

There is an aspect of the pattern matching I don't understand.

In the documentation of the pattern matching they show an example such as :

https://docs.scala-lang.org/tour/pattern-matching.html

1abstract class Notification
2
3case class Email(sender: String, title: String, body: String) extends Notification
4
5case class SMS(caller: String, message: String) extends Notification
6
7case class VoiceRecording(contactName: String, link: String) extends Notification
8
9def showNotification(notification: Notification): String = {
10  notification match {
11    case Email(sender, title, _) =>
12      s"You got an email from $sender with title: $title"
13    case SMS(number, message) =>
14      s"You got an SMS from $number! Message: $message"
15    case VoiceRecording(name, link) =>
16      s"You received a Voice Recording from $name! Click the link to hear it: $link"
17  }
18}
19val someSms = SMS("12345", "Are you there?")
20val someVoiceRecording = VoiceRecording("Tom", "voicerecording.org/id/123")
21

Which could be somewhat recoded in java such as :

1abstract class Notification
2
3case class Email(sender: String, title: String, body: String) extends Notification
4
5case class SMS(caller: String, message: String) extends Notification
6
7case class VoiceRecording(contactName: String, link: String) extends Notification
8
9def showNotification(notification: Notification): String = {
10  notification match {
11    case Email(sender, title, _) =>
12      s"You got an email from $sender with title: $title"
13    case SMS(number, message) =>
14      s"You got an SMS from $number! Message: $message"
15    case VoiceRecording(name, link) =>
16      s"You received a Voice Recording from $name! Click the link to hear it: $link"
17  }
18}
19val someSms = SMS("12345", "Are you there?")
20val someVoiceRecording = VoiceRecording("Tom", "voicerecording.org/id/123")
21Notification notification = /* Init a notification instance */
22
23if(notification instanceof Email) {
24    Email currentEmail = (Email) notification;
25    currentEmail.doSomething();
26} else if (notification instanceof SMS) {
27    SMS currentSMS = (SMS) notification;
28    currentSMS.doSomething();
29} else if {
30    /* ... */
31}
32

Pattern matching seems to be very positively seen but on the opposite the java equivalent is seen as a "code smell" or a bad pattern.

From my understand they are doing the same thing and maybe technically as well, it's just hidden for the scala pattern matching.

Yet such a double standard wouldn't stay unseen so I guess there is something wrong with my understanding.

ANSWER

Answered 2022-Feb-02 at 18:37

Under the hood, Scala pattern matching often boils down to code that's exactly like the if (notification instanceof Email) { ... } else if (notification instanceof SMS) Java code.

The particular example you give, of an abstract class Notification which isn't sealed is one where the Scala code is no better (except perhaps expressing overall intent more clearly) than the if/instanceof tree.

This is because the main benefit of pattern matching is the possibility of exhaustivity checking. With the if/instanceof approach and the example of pattern matching you present, you aren't going to be alerted that you haven't handled every case (e.g. you left off the VoiceRecording case).

By making Notification sealed (e.g. sealed abstract class Notification), the Scala compiler will ensure that no Scala code in other files (technically, compilation units, which are for all intents and purposes files) can extend Notification; since it now knows all the possible Notifications, it can then raise a compiler error if you miss a case. There's no reliable way to do this in the if/instanceof case because that's a lower level of abstraction.

Source https://stackoverflow.com/questions/70958443

QUESTION

Publishing an unofficial version of Telegram in Play Console

Asked 2022-Jan-31 at 07:07

My app is an unofficial version of Telegram app that has been already published in Play Store. For first publishing and a few updates afterward, there was no problem for login from Google. But my last update was rejected as below:

Issue: Need login credentials for app review In order for us to review your app for compliance with Developer Program Policies, we will need you to provide valid login credentials for your app. If users need credentials to access your app, please provide all appropriate credentials via Play Console. If you previously supplied credentials, please ensure that they have not expired. If your app normally uses 2-Step Verification (e.g. SMS verification), biometrics (e.g. a fingerprint or face scan) or a location-dependent password (e.g. geo-gate), please provide valid demo credentials that we can use instead.

My question is how to provide an account for Play Store to review my app? or is there any demo account for Telegram to check? Thanks

ANSWER

Answered 2022-Jan-31 at 07:07

I recently faced a similar problem and here is my solution.

  1. First of all, I found this documentation. Here you can find these test phone numbers/accounts which you can use.
  2. In the BuildVars file, I've set both DEBUG_VERSION and DEBUG_PRIVATE_VERSION to "true".
  3. Deploy an app and check how it works with Test Accounts. Don't forget: It's very necessary to tick the "Test Backend" checkbox, otherwise, Telegram Test Accounts will not work!
  4. I turned on a "Managed publishing" in the Google Play Console (it allows you to send a Bundle to review and manually send an app to production after it if needed).
  5. I described how exactly the Google Play Team should use these accounts to check my app in App Content -> App access in Google Play Console.
  6. After I passed the review, I built another Bundle, in which I've set both DEBUG_VERSION and DEBUG_PRIVATE_VERSION back to "false" and sent this bundle to the review again (this version will go to Production)

Source https://stackoverflow.com/questions/70272163

QUESTION

How do I "not" select first character in a regex pattern?

Asked 2021-Dec-25 at 10:38

I am a RegEx beginner and trying to identify the endings of different statements in sms. See screenshot below.

How can I avoid selecting the next letter following by a full-stop that indicates ending of a statement.

Note that some statements have <.><Alphabets> while some have <.><space><Alphabets>

Regex used: r"\. ?[\D]"

Sample SMS: - I want to select just the full-stop and space if any.

1Txn of USD 00.00 done using TC XX at POS*MERCH on 30-Feb-22. Avl bal:USD 00.00. Call xxxxxx for dispute or SMS BLOCK xxxx to xxxxxxx
2
3Acct XX debited with USD XX.00 on some date.Info: ABC*BDECS-XYZ.Avbl Bal:USD yy,xxx.95.Call xxxxxx for dispute or SMS BLOCK xx to xxxxx
4

ANSWER

Answered 2021-Dec-25 at 05:17

What you're looking for is a look-ahead group. Whether you make that a positive look-ahead and use the negated character set \D or a negative look-ahead with the character set \d doesn't really matter- I'll outline both below:

1Txn of USD 00.00 done using TC XX at POS*MERCH on 30-Feb-22. Avl bal:USD 00.00. Call xxxxxx for dispute or SMS BLOCK xxxx to xxxxxxx
2
3Acct XX debited with USD XX.00 on some date.Info: ABC*BDECS-XYZ.Avbl Bal:USD yy,xxx.95.Call xxxxxx for dispute or SMS BLOCK xx to xxxxx
4regex = r&quot;. ?(?=\D)&quot;  # asserts that the following character matches \D
5regex = r&quot;. ?(?!\d)&quot;  # asserts the following character does NOT match \d
6

There's also look-behind variants (?<!pattern) and (?<=pattern), which assert that the pattern doesn't/does match just before the current position.

None of these groups capture the matched text- they just "look ahead" or "look behind" without changing state.

Source https://stackoverflow.com/questions/70478086

QUESTION

Bad request in PHP

Asked 2021-Dec-18 at 17:43

Hello guys i am trying to run an API request which uses URL based authentication. But whenever the message has some spaces in between the message text i receive the error

failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request in C:\wamp64\www\testscripts\wialon.php on line 21

When i take the same url string(with the message having spaces in between) and run it on a browser the message sending is successful bellow is my code

1&lt;?php
2    $sendname=$_GET['name'];
3    $sendage=$_GET['age'];
4    $passdat=$_GET['password'];
5    $url = 'https://api.smsleopard.com/v1/sms/send?username=O6QDPDmFBDu6BYBTTX3q&amp;password=.$passdat&amp;message='.$sendage.'&amp;destination=254700160125&amp;source=TWIGA';
6
7    $contents = file_get_contents($url);
8
9    //If $contents is not a boolean FALSE value.
10    if($contents !== false){
11        //Print out the contents.
12        echo $contents;
13    }
14    exit();
15}
16

ANSWER

Answered 2021-Dec-18 at 16:51
1&lt;?php
2    $sendname=$_GET['name'];
3    $sendage=$_GET['age'];
4    $passdat=$_GET['password'];
5    $url = 'https://api.smsleopard.com/v1/sms/send?username=O6QDPDmFBDu6BYBTTX3q&amp;password=.$passdat&amp;message='.$sendage.'&amp;destination=254700160125&amp;source=TWIGA';
6
7    $contents = file_get_contents($url);
8
9    //If $contents is not a boolean FALSE value.
10    if($contents !== false){
11        //Print out the contents.
12        echo $contents;
13    }
14    exit();
15}
16$url = 'https://api.smsleopard.com/v1/sms/send?username=O6QDPDmFBDu6BYBTTX3q&amp;password='.$passdat.'&amp;message='.$sendage.'&amp;destination=254700160125&amp;source=TWIGA';
17

you forgot ' multiple times

Source https://stackoverflow.com/questions/70405269

QUESTION

SmsRetrieverClient Crash last update

Asked 2021-Dec-18 at 17:27

Google docs say :

Start listening for incoming messages Next, call the SMS User Consent API's startSmsUserConsent() method to start listening for incoming messages. If you know the phone number from which the SMS message will originate, specify it (otherwise, pass null). This way, the SMS User Consent API will only trigger on messages from this number.

But the last update include the change: Strict nullability annotations (@NonNull and @Nullable) are being used where previously @RecentlyNonNull and @RecentlyNullable were used. With this change, what once caused a nullness warning will now cause an error when building Kotlin code or using Java null checking frameworks. Similar annotation changes will be incrementally rolled out in future releases of other com.google.android.gms artifacts.

And now I am getting crash when using SmsRetriever. Since I am specifying null in startSmsUserConsent()

UPDATE: I use:

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3

My code:

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10

If we go inside startSmsUserConsent we can see this:

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10@RecentlyNonNull
11public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
12

When i update libraries to version:

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10@RecentlyNonNull
11public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
12implementation 'com.google.android.gms:play-services-auth:20.0.0'
13implementation 'com.google.android.gms:play-services-auth-api-phone:18.0.0'
14

And now if we go inside startSmsUserConsent, we will see this:

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10@RecentlyNonNull
11public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
12implementation 'com.google.android.gms:play-services-auth:20.0.0'
13implementation 'com.google.android.gms:play-services-auth-api-phone:18.0.0'
14@NonNull
15public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
16

And now when startSmsUserConsent fires I get crash

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10@RecentlyNonNull
11public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
12implementation 'com.google.android.gms:play-services-auth:20.0.0'
13implementation 'com.google.android.gms:play-services-auth-api-phone:18.0.0'
14@NonNull
15public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
16E/AndroidRuntime: FATAL EXCEPTION: main
17    Process: org.***.***, PID: 5183
18    java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter it
19        at org.***.***.ui.fragment.account.Account.startSmsUserConsent$lambda-2$lambda-0(Unknown Source:2)
20        at org.***.***.ui.fragment.account.Account.$r8$lambda$IQ631PjiyctiI5X-7HCb3IAxRs0(Unknown Source:0)
21        at org.***.***.ui.fragment.account.Account$$ExternalSyntheticLambda6.onSuccess(Unknown Source:2)
22        at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.0:1)
23        at android.os.Handler.handleCallback(Handler.java:938)
24        at android.os.Handler.dispatchMessage(Handler.java:99)
25        at android.os.Looper.loop(Looper.java:223)
26        at android.app.ActivityThread.main(ActivityThread.java:7656)
27        at java.lang.reflect.Method.invoke(Native Method)
28        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
29        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
30I/Process: Sending signal. PID: 5183 SIG: 9
31

My build:

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10@RecentlyNonNull
11public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
12implementation 'com.google.android.gms:play-services-auth:20.0.0'
13implementation 'com.google.android.gms:play-services-auth-api-phone:18.0.0'
14@NonNull
15public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
16E/AndroidRuntime: FATAL EXCEPTION: main
17    Process: org.***.***, PID: 5183
18    java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter it
19        at org.***.***.ui.fragment.account.Account.startSmsUserConsent$lambda-2$lambda-0(Unknown Source:2)
20        at org.***.***.ui.fragment.account.Account.$r8$lambda$IQ631PjiyctiI5X-7HCb3IAxRs0(Unknown Source:0)
21        at org.***.***.ui.fragment.account.Account$$ExternalSyntheticLambda6.onSuccess(Unknown Source:2)
22        at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.0:1)
23        at android.os.Handler.handleCallback(Handler.java:938)
24        at android.os.Handler.dispatchMessage(Handler.java:99)
25        at android.os.Looper.loop(Looper.java:223)
26        at android.app.ActivityThread.main(ActivityThread.java:7656)
27        at java.lang.reflect.Method.invoke(Native Method)
28        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
29        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
30I/Process: Sending signal. PID: 5183 SIG: 9
31minSdkVersion 19
32targetSdkVersion 31
33Test device api 30
34

UPDATE: Also if I update

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10@RecentlyNonNull
11public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
12implementation 'com.google.android.gms:play-services-auth:20.0.0'
13implementation 'com.google.android.gms:play-services-auth-api-phone:18.0.0'
14@NonNull
15public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
16E/AndroidRuntime: FATAL EXCEPTION: main
17    Process: org.***.***, PID: 5183
18    java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter it
19        at org.***.***.ui.fragment.account.Account.startSmsUserConsent$lambda-2$lambda-0(Unknown Source:2)
20        at org.***.***.ui.fragment.account.Account.$r8$lambda$IQ631PjiyctiI5X-7HCb3IAxRs0(Unknown Source:0)
21        at org.***.***.ui.fragment.account.Account$$ExternalSyntheticLambda6.onSuccess(Unknown Source:2)
22        at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.0:1)
23        at android.os.Handler.handleCallback(Handler.java:938)
24        at android.os.Handler.dispatchMessage(Handler.java:99)
25        at android.os.Looper.loop(Looper.java:223)
26        at android.app.ActivityThread.main(ActivityThread.java:7656)
27        at java.lang.reflect.Method.invoke(Native Method)
28        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
29        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
30I/Process: Sending signal. PID: 5183 SIG: 9
31minSdkVersion 19
32targetSdkVersion 31
33Test device api 30
34implementation &quot;com.google.android.gms:play-services-maps:18.0.0&quot;
35implementation 'com.google.firebase:firebase-bom:29.0.1'
36

Up to version:

1implementation 'com.google.android.gms:play-services-auth:19.2.0'
2implementation 'com.google.android.gms:play-services-auth-api-phone:17.5.1'
3private fun startSmsUserConsent() {
4    SmsRetriever.getClient(requireContext()).also {
5        it.startSmsUserConsent(null)
6            .addOnSuccessListener { Timber.d(&quot;LISTENING_SUCCESS&quot;) }
7            .addOnFailureListener { Timber.d(&quot;LISTENING_FAILURE&quot;) }
8    }
9}
10@RecentlyNonNull
11public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
12implementation 'com.google.android.gms:play-services-auth:20.0.0'
13implementation 'com.google.android.gms:play-services-auth-api-phone:18.0.0'
14@NonNull
15public abstract Task&lt;Void&gt; startSmsUserConsent(@Nullable String var1);
16E/AndroidRuntime: FATAL EXCEPTION: main
17    Process: org.***.***, PID: 5183
18    java.lang.NullPointerException: Parameter specified as non-null is null: method kotlin.jvm.internal.Intrinsics.checkNotNullParameter, parameter it
19        at org.***.***.ui.fragment.account.Account.startSmsUserConsent$lambda-2$lambda-0(Unknown Source:2)
20        at org.***.***.ui.fragment.account.Account.$r8$lambda$IQ631PjiyctiI5X-7HCb3IAxRs0(Unknown Source:0)
21        at org.***.***.ui.fragment.account.Account$$ExternalSyntheticLambda6.onSuccess(Unknown Source:2)
22        at com.google.android.gms.tasks.zzm.run(com.google.android.gms:play-services-tasks@@18.0.0:1)
23        at android.os.Handler.handleCallback(Handler.java:938)
24        at android.os.Handler.dispatchMessage(Handler.java:99)
25        at android.os.Looper.loop(Looper.java:223)
26        at android.app.ActivityThread.main(ActivityThread.java:7656)
27        at java.lang.reflect.Method.invoke(Native Method)
28        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
29        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
30I/Process: Sending signal. PID: 5183 SIG: 9
31minSdkVersion 19
32targetSdkVersion 31
33Test device api 30
34implementation &quot;com.google.android.gms:play-services-maps:18.0.0&quot;
35implementation 'com.google.firebase:firebase-bom:29.0.1'
36implementation &quot;com.google.android.gms:play-services-maps:18.0.1&quot;
37implementation 'com.google.firebase:firebase-bom:29.0.2'
38

I get the same crash.Probably the problem is somewhere in "com.google.android.gms"

ANSWER

Answered 2021-Dec-18 at 17:27

The problem has been resolved.

[Release Notes Google Services] : https://developers.google.com/android/guides/releases

December 16, 2021 The latest updates to play-services-base and play-services-tasks resolve the issue that can lead to runtime NPEs (NullPointerException) when handling Task results in Kotlin code. If you're using any of the library versions listed in the December 09, 2021 release, you can avoid the runtime NPEs by explicitly depending on v18.0.1 of play-services-base and play-services-tasks. Add the following to the dependencies section of your build.gradle:

implementation 'com.google.android.gms:play-services-base:18.0.1' implementation 'com.google.android.gms:play-services-tasks:18.0.1' In January 2022, we plan to release new versions of the other artifacts released on December 09 with new POM dependencies on the 18.0.1 versions of play-services-base and play-services-tasks.

The latest update to Firebase includes changes to:

Firebase Android BoM (Bill of Materials) Firebase SDK for Google Analytics This Firebase release picks up the latest versions of play-services-base and play-services-tasks (v18.0.1) to fix the issue described in the December 09, 2021 release.

For more information, see the Firebase Android SDK Release Notes.

Source https://stackoverflow.com/questions/70379687

Community Discussions contain sources that include Stack Exchange Network

Tutorials and Learning Resources in SMS

Tutorials and Learning Resources are not available at this moment for SMS

Share this Page

share link

Get latest updates on SMS