我有一个BroadcastReceiver
类读取传入sms
并从sms
提取一个引脚。 我想将该sms
传递给用户已经看到的活动。 用户应该在EditText
中输入引脚,我将EditText
中的值输入,将用户输入的引脚与BroadcastReceiver
传递的引脚进行比较。如果两者都匹配,用户可以进入应用程序。但我不知道如何将BroadcastReceiver
收到的PIN码传递到Activity
。 下面是代码如何将数据从BroadcastReceiver传递给Activity?
广播接收器类
public class IncomingMessage extends BroadcastReceiver {
final SmsManager sms = SmsManager.getDefault();
private OnSMSReceived onSMSReceived = null;
@Override
public void onReceive(Context context, Intent intent) {
// Retrieves a map of extended data from the intent.
final Bundle bundle = intent.getExtras();
try {
if (bundle != null) {
String senderNum = null;
String message = null;
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
senderNum = phoneNumber;
message = currentMessage.getDisplayMessageBody();
Log.i("SmsReceiver", "senderNum: " + senderNum + "; message: " + message);
}
if (senderNum.equals("ideamart")) {
Log.d("MessageIdeaMart", message);
} else if (senderNum.equals("FindDroid")) {
if (message.startsWith("Welcome")) {
String[] splitArray = message.split(" ");
String pin = splitArray[7];
Log.d("PIN", pin);
}
}
}
} catch (Exception e) {
Log.e("SmsReceiver", "Exception smsReceiver" + e);
}
}
public void setOnSmsReceivedListener(Context context) {
this.onSMSReceived = (OnSMSReceived) context;
}
public interface OnSMSReceived {
void onSMSReceived(String pin);
}
}
嘿,您只需建立必要的活动内的广播接收器类。分别在onResume和onPause中注册和注销它。现在,当您在此时发送广播时,请使用与创建内部活动时广播的内容相同的操作。 –