在 Android 中實現自動獲取短信驗證碼的功能可以分為以下幾個步驟:
<uses-permission android:name="android.permission.READ_SMS"/>
public class SMSReceiver extends BroadcastReceiver {
private 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)) {
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdusObj = (Object[]) bundle.get("pdus");
if (pdusObj != null) {
for (Object pdus : pdusObj) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdus);
String messageBody = smsMessage.getMessageBody();
// 提取短信中的驗證碼
String verificationCode = extractVerificationCode(messageBody);
// 處理獲取到的驗證碼
// ...
}
}
}
}
}
private String extractVerificationCode(String messageBody) {
// 根據短信的內容提取驗證碼
// 例如通過正則表達式匹配驗證碼的格式
// ...
}
}
// 在需要接收短信的頁面或者 Application 類中注冊 BroadcastReceiver
SMSReceiver smsReceiver = new SMSReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(smsReceiver, intentFilter);
注意:在不需要獲取短信驗證碼的時候,記得要取消注冊 BroadcastReceiver。
// 取消注冊 BroadcastReceiver
unregisterReceiver(smsReceiver);
這樣,當有新的短信到來時,系統會發送一個廣播到注冊的 BroadcastReceiver 中,其中包含了短信的內容,我們可以在 BroadcastReceiver 中提取出短信中的驗證碼,并進行相應的處理。