我有一個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中註冊和註銷它。現在,當您在此時發送廣播時,請使用與創建內部活動時廣播的內容相同的操作。 –