AndroidはContentObserver方式で自動認証コードを取得します。


Android自動取得認証コードの2つの方法は、それぞれBroadcastReceiverとContentObserverであり、両方とも登録、登録をキャンセルする必要があります。
権限を追加したことを覚えてください。ここでContentObserver方式を紹介します。
先にContentObserverコードに行きます。

/**
 * Created by weifeiyang on 2016/7/29 0029.
 */

import android.app.Activity;
import android.content.SharedPreferences;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Handler;
import android.text.TextUtils;
import android.widget.EditText;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 *        ,      
 * Created by cool on 2016/1/4.
 */
public class ReadSmsContent extends ContentObserver {
 private Cursor cursor = null;
 private Activity mActivity;
 private EditText mEditText;

 public ReadSmsContent(Handler handler, Activity activity, EditText editText) {
  super(handler);
  this.mActivity = activity;
  this.mEditText = editText;
 }

 @Override
 public void onChange(boolean selfChange, Uri uri) {

 /*
                    
                   onChange(),
             onChange        
 */
  if (uri.toString().equals("content://sms/raw")) {
   return;
  }

  /*
            

   address        :
   body     :
   read     :
   date     :
   */
  cursor = mActivity.getContentResolver().query(Uri.parse("content://sms/inbox"),
    new String[]{"_id", "address", "body", "read"}, null, null, "_id desc");//     

//      
//  mActivity.managedQuery(Uri.parse("content://sms/inbox"),
//    new String[]{"_id", "address", "body", "read"}, "address=? and read=?", new String[]{"10086", "0"}, "_id desc");

  if (null != cursor && cursor.getCount() > 0) {
   cursor.moveToNext();//    
   int smsbodyColumn = cursor.getColumnIndex("body");//body  
   String smsBody = cursor.getString(smsbodyColumn);//    
   String verifyCode = getDynamicPassword(smsBody);
   if (TextUtils.isEmpty(verifyCode)) {
    return;
   }
   if (mEditText == null) {
    throw new RuntimeException("   EditText  ");
   }
   if (verifyCode.contains("             "))) {
    mEditText.setText(verifyCode);
    //EditText    ,3         
    mEditText.setFocusable(true);
    mEditText.setFocusableInTouchMode(true);
    mEditText.requestFocus();
    mEditText.setSelection(verifyCode.length());//      
   }

  }
  if (!cursor.isClosed()) {
   cursor.close();
  }
 }

 /**
  *          4   
  *             
  *
  * @param str     
  * @return      4     
  */
 public static String getDynamicPassword(String str) {
  Pattern continuousNumberPattern = Pattern.compile("[0-9\\.]+");
  Matcher m = continuousNumberPattern.matcher(str);
  String dynamicPassword = "";
  while (m.find()) {
   if (m.group().length() == 4) {
    dynamicPassword = m.group();
   }
  }

  return dynamicPassword;
 }
}
観察者があれば利用できます。activityやfragmentのオンクレットメソッドでinitSmSContentObserver()を呼び出して登録して、オンデマンド()で通過します。
//ログアウト内容監聴者
this.get ContentResolover().unregister Contront Observer(readSmsContront);
登録をキャンセルする

 /**
  *           
  */
 private void initSmSContentObserver() {
  readSmsContent = new ReadSmsContent(new Handler(), this, seCodeEditText);
  //        
  this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, readSmsContent);

 }

上記の2つの方法でメールを取得した後、現在はショートメッセージのプラットフォームのソースコードが固定されていないため、検証コードを使って検証しています。
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。