Android 문자 인증 코드 자동 채 우기 기능 구현

머리말
문자 인증 코드 를 가 져 오고 자동 으로 작성 하 는 것 은 이제 인성 화 된 앱 의 표지 가 되 었 습 니 다.이 글 은 문자 인증 코드 를 가 져 오고 자동 으로 작성 하 는 demo 를 실현 할 것 입 니 다.사실은 지 정 된 번호 의 문 자 를 읽 고 인증 번 호 를 추출 한 다음 에 EditText 에 값 을 부여 하 는 것 이다.
demo 효과 도:

문자 읽 기
Android 시스템 은 문자 한 통 을 받 을 때 Action 을 android.provider.Telephony.SMS 로 보 냅 니 다.RECEIVED 의 질 서 있 는 방송 이기 때문에 우 리 는 문자 의 인증 코드 를 읽 고 이 방송 을 감청 한 후에 문자 의 인증 코드 를 추출 하면 된다.예 를 들 어:

/**
* Created by    on 2018/9/27.
*/

public class SMSBroadcastReceiver extends BroadcastReceiver {

 private static final String TAG = "SMSBroadcastReceiver";
 private OnReceiveSMSListener mOnReceiveSMSListener;
 public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED";

 @Override
 public void onReceive(Context context, Intent intent) {
  if (intent.getAction().equals(SMS_RECEIVED_ACTION)) {
   Object[] pdus = (Object[]) intent.getExtras().get("pdus");
   for(Object pdu:pdus) {
    SmsMessage smsMessage = SmsMessage.createFromPdu((byte [])pdu);
    //     
    String sender = smsMessage.getDisplayOriginatingAddress();
    Log.d(TAG,sender+"");
    //    
    String content = smsMessage.getDisplayMessageBody();
    //   
    if ("       ".equals(sender) && mOnReceiveSMSListener!= null) {
     Pattern pattern = Pattern.compile("\\d+");
     Matcher matcher = pattern.matcher(content);
     if(matcher.find()) {
      mOnReceiveSMSListener.onReceived(matcher.group());
     }
     abortBroadcast();
    }
   }
  }

 }

 /**
 *     
 */
 public interface OnReceiveSMSListener {
  void onReceived(String message);
 }


 public void setOnReceiveSMSListener(OnReceiveSMSListener onReceiveSMSListener) {
  mOnReceiveSMSListener = onReceiveSMSListener;
 }
}
코드 설명 이 비교적 명확 하 며 Smsmessage 대상 을 통 해 문자 의 발송 번호,문자 내용 과 관련 정 보 를 얻 을 수 있 습 니 다.문자 번호 가 읽 을 문자 발송 자 번 호 를 보 낼 때 정규 표현 식 으로 문자 내용 의 인증 번 호 를 추출 한 다음 모니터 를 호출 하 는 리 셋 방법 으로 해당 UI 를 업데이트 합 니 다.여기 서 문자 검증 발신 자 번 호 를 해당 번호 로 교체 하면 된다.예 를 들 어'106903561008710'이 텐 센트 클 라 우 드 등록 으로 보 낸 문자 번호 다.
보통 저 희 는 등록 이나 로그 인 페이지 에서 문자 인증 코드 만 읽 기 때문에 저 희 는 동적 으로 방송 을 등록 하 는 방식 으로 이 방송 을 등록 합 니 다.예 를 들 어:

//     
IntentFilter intentFilter = new IntentFilter(SMSBroadcastReceiver.SMS_RECEIVED_ACTION);
//      
intentFilter.setPriority(Integer.MAX_VALUE);
registerReceiver(mSMSBroadcastReceiver,intentFilter);
등록 을 취소 하 다

@Override
protected void onDestroy() {
 super.onDestroy();
 unregisterReceiver(mSMSBroadcastReceiver);
}
MainActivity.java 의 코드 는:

public class MainActivity extends AppCompatActivity implements SMSBroadcastReceiver.OnReceiveSMSListener {

 private SMSBroadcastReceiver mSMSBroadcastReceiver = new SMSBroadcastReceiver();
 private EditText mEt_code;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  mEt_code = (EditText) findViewById(R.id.et_code);
  mSMSBroadcastReceiver.setOnReceiveSMSListener(this);
  //     
  IntentFilter intentFilter = new IntentFilter(SMSBroadcastReceiver.SMS_RECEIVED_ACTION);
  //      
  intentFilter.setPriority(Integer.MAX_VALUE);
  registerReceiver(mSMSBroadcastReceiver,intentFilter);
 }

 @Override
 public void onReceived(String message) {
  mEt_code.setText(message+"");
 }

 @Override
 protected void onDestroy() {
  super.onDestroy();
  unregisterReceiver(mSMSBroadcastReceiver);
 }
}
이 demo 의 코드 는 비교적 간단 합 니 다.바로 방송 을 감청 하고 받 은 문 자 를 읽 은 다음 에 우리 가 원 하 는 인증 코드 문 자 를 걸 러 낸 다음 에 정규 표현 식 으로 인증 코드 설정 을 추출 하여 EditText 에 표시 하면 됩 니 다.이 demo 를 다운로드 하거나 직접 작성 하여 발송 자 문자 번 호 를 변경 하여 실행 한 다음 에 등록 사이트 나 아 날로 그 인증 코드 문 자 를 찾 아 테스트 할 수 있 습 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기