在Android中自动从短信中选择特定文本

时间:2015-02-28 06:44:34

标签: android broadcastreceiver android-broadcast

我正在尝试通过我的APP验证6位数字。收到特定的短信后,我想自动执行此操作。

我有一个可以接收消息的独立广播接收器文件。我收到它然后停止广播接收器。

我有两个问题:

  1. 我不确定如何在已打开的活动中插入6位数字?我是否需要将6位数放入某个共享偏好中,并使用活动中的计时器检查是否有任何值?

  2. 我不确定如何从短信中提取6位数字?文本格式为:“xxxx是您手机号码的一次性密码(OTP)。”

  3. 有人可以帮我吗?

    谢谢!

1 个答案:

答案 0 :(得分:1)

  

我不确定如何在已打开的活动中插入4位数字?我是否需要将4位数放入某个共享偏好中并使用活动中的计时器检查是否有任何值?

在您要执行某项操作的活动的onResume中注册您的SMS BroadcastReceiver,并在onPause中取消注册。

  

我不确定如何从短信中提取4位数字?文本格式为:“xxxx是您手机号码的一次性密码(OTP)。”

public void onReceiver(Context context, Intent intent){
    Object[] pdus=(Object[])intent.getExtras().get("pdus");
    SmsMessage shortMessage=SmsMessage.createFromPdu((byte[]) pdus[0]);

    Log.d("SMSReceiver","SMS message text: "+
       shortMessage.getDisplayMessageBody()); // Here you get body of it, extract data whatever you need.
}