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 를 다운로드 하거나 직접 작성 하여 발송 자 문자 번 호 를 변경 하여 실행 한 다음 에 등록 사이트 나 아 날로 그 인증 코드 문 자 를 찾 아 테스트 할 수 있 습 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.