Reputation: 61
So I have a verification code that comes through from sms and user has exit app to go copy it into an EditText
.
I found out the Android Pay has a method to scan the incoming verification text from your bank and autofill the text with a verification code.
I'd like to replicate this for my own app but I'm not 100% sure how I do this as I'm struggling to search for what I need. What I've found so far is it could be done via a ContentResolver but that might not be the best solution as it could be different on different Android flavours.
Upvotes: 0
Views: 903
Reputation: 43334
Android has this built in since play services 10.2.x.
It works only if you include an app specific hash in the SMS message body, which android uses to determine which app to alert that a new message just came in.
When an SMS message with that exact hash is received, android will fire up a broadcastreceiver that youregister in the manifest with a special intent filter:
<receiver android:name=".MySMSBroadcastReceiver" android:exported="true">
<intent-filter>
<action android:name="com.google.android.gms.auth.api.phone.SMS_RETRIEVED"/>
</intent-filter>
</receiver>
How it works in more detail and what code is required etc, you can check here on the developer's blog or here in the official guides.
Note that this won't work if you don't have access to the system that sends out the SMS, meaning you can't add the hash to the message.
Upvotes: 1
Reputation: 93668
You want a broadcast receiver for SMS, which reads an incoming SMS, checks if the number is right and if the format of the SMS is right, and parses the number from it.
Actually if you can do that there's no need to autofill- just send the request to the correct API for verification directly, so they don't even have to press send.
Upvotes: 1