Android registration to send SMS verification code and automatically get text messages, intercept digital verification code fill text box.
I. Access to SMS Platform
First of all need to select the SMS platform access, where the use of the hazelnut cloud SMS platform (http://smsow.zhenzikj.com),
Two minutes to apply for the test account, giving 100 test messages.
Android uses Java's jar package to develop
Jar Download: http://smsow.zhenzikj.com/doc/sdk.html
API Document: Http://smsow.zhenzikj.com/doc/java_sdk_doc.html
Use test Account login Admin background get AppID, Appsecret, Address: Http://sms.zhenzikj.com/zhenzisms_user
Open in "My Apps", "Details":
1. Installation
The downloaded SDK contains only one jar file and does not rely on any other jar packages or files to be imported directly into the project for use.
2. Usage
Initialize zhenzismsclient with pre-applied AppID, Appsecret:
Zhenzismsclient client = new Zhenzismsclient (appId, Appsecret);
AppId and Appsecret are distributed by SMS platform.
1) Send SMS
String result = Client.send ("15811111111", "Your verification code is 4534, valid time is 5 minutes");
Send method for single text message
Parameter 1: Receiver mobile number, parameter 2: SMS Content
The returned result is a JSON-formatted string, code: Send status, 0 for success. Non-0 fails to send, can view error message from data
{"Code": 0, "Data": "Sent Successfully"}
Two. Get Verification code automatically
The general idea needs to be done in the following steps:
Get SMS Content
Determine if the text message contains a verification code, if there is a withdrawal, if not to inform the user does not match the SMS Verification Code
Populate the text box with the matching SMS verification code
Start making
1.) Request SMS Permission
<uses-permission android:name= "Android.permission.RECEIVE_SMS"/> <!--receive SMS permission--><uses-permission Android:name= "Android.permission.READ_SMS"/> <!--read SMS rights--
Attention!!!
Since Google introduced runtime permissions in Android6.0, so long as the API version is greater than 23 requires permission to apply, here is a very simple and fast third-party library for the use of run-time permissions to request, Android 6.0 Runtime Permissions third-party library use- Rxpermissions
2.) Register SMS Recipients
We know that every time the system receives a text message, it sends out a broadcast,
To do this, the first thing we need to do is to configure a broadcast receiver to respond to this broadcast
SMS recipients are configured in the Androidmanifest.xml file:
<receiver android:name= ". Smsreceiver "> <intent-filter android:priority=" "> <action android:name=" android.provider.Te Lephony.sms_received "/> </intent-filter></receiver>
Note Set this broadcast receiver to the highest level (1000)
Smsreceiver.java
public class Smsreceiver extends Broadcastreceiver {private static final String TAG = "Smsreceiver"; @Override public void OnReceive (context context, Intent Intent) {//For the operation of obtaining SMS getmsg (context, Intent); }}
3.) Then get the SMS content
Private void getmsg (context context, intent intent) { //pdus Text message Unit pdu //parsing SMS content Object[] pdus = (object[]) intent.getextras (). Get (" PDUs "); assert pdus != null; for (Object pdu : pdus) { //Package SMS Parameters Object &NBSP;&NBSP;&NBSP;SMSMESSAGE&NBSP;SMS&NBSP;=&NBSP;SMSMESSAGE.CREATEFROMPDU ((byte[]) &NBSP;PDU); String number = Sms.getoriginatingaddress (); string body = sms.getmessagebody (); //write his own logic of handling //Get SMS Verification Code getcode (context, body); } }
Through the Smsmessage object can get the text message sent number, text message content and related information.
Match the verification code and copy it to the Clipboard
Here we put the verification into the clipboard, of course, you can also directly fill it into the text box
Private void getcode (context context, string body) { //get Clipboard Manager: &NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;&NBSP;CLIPBOARDMANAGER&NBSP;CM = (Clipboardmanager) context.getsystemservice (context.clipboard_service); pattern pattern1 = pattern.compile ("(\\d{6})");//extract six digits matcher matcher1 = pattern1.matcher (body);//To match pattern pattern2 = pattern.compile ("(\\d{4})") ;//extract four-bit digital matcher matcher2 = pattern2.matcher ( body);//Match if (Matcher1.find ()) {//match Success string code = matcher1.group (0); // creating a normal character type clipdata clipdata mclipdata = clipdata.newplaintext ("Label", code); // put Clipdata content in the system Clipboard. cm.setprimaryclip (MClipData); toast.maketext (context, "Verification code copy succeeded", toast.length_short). Show (); log.d (tag, "onreceive: " + code); } else if (Matcher2.find ()) { String code = matcher2.group (0); // Create a normal character type CLIPDATA&NBSP;&NBsp; clipdata mclipdata = Clipdata.newplaintext ("Label", code); // put Clipdata content in the system Clipboard. cm.setprimaryclip (MClipData); toast.maketext (context, "Verification code copy succeeded", toast.length_short). Show (); log.d (tag, "onreceive: " + code); } else { toast.maketext (context, " No verification code detected ", toast.length_short). Show (); &NBSP;LOG.D (tag, "onreceive: " + "No Verification Code detected"); } }
In this case, the verification code in the text message is matched by regular expression, because the verification code is mostly 4-bit or 6-bit, so the 4-bit verification code and 6-bit verification code are directly judged in order to simplify it.
OK, you are done.
Android sends SMS verification code and automatically gets captcha fill text box