簡體   English   中英

Android:將值從活動傳遞到broadcastreceiver

[英]Android: Pass value from activity to broadcastreceiver

首先,抱歉我的語法不好。 我正在使用broadcastreceiver開發自動回復消息應用程序我有問題,當我可以從活動接收值到broadcastreceiver時,自動回復將無法正常工作。 但是,如果我沒有從Activity獲得價值,它就會起作用。 這是我的活動代碼,我把它放在onSensorChanged()

Intent i = new Intent("my.action.string");
i.putExtra("apaan", lala);
sendBroadcast(i);

這是我的廣播接收班

public class AutoReply extends BroadcastReceiver{

private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";

@Override
public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    Log.i("message", "Broadcast Received: " +action);

    if (action.equals(SMS_RECEIVED) && action.equals("my.action.string")) {
        Bundle bundle = intent.getExtras();
        String state = bundle.getString("apaan");

        if (bundle != null) {
            Object[] pdus = (Object[]) bundle.get("pdus");
            final SmsMessage[] sms = new SmsMessage[pdus.length];
            String isiSMS = "", noPengirim = "";
            for (int i = 0; i < pdus.length; i++) {
                sms[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                isiSMS = sms[i].getMessageBody();//mengambil isi pesan dari pengirim
                noPengirim = sms[i].getOriginatingAddress();//mengambil no pengirim
            }

            String message = state;//isi balasan autoreplay

            SmsManager smsSend = SmsManager.getDefault();
            smsSend.sendTextMessage(noPengirim, null, message, null, null);
        }
    }
}

這是我的表現

<receiver android:name=".AutoReply" android:enabled="true">
        <intent-filter>
            <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            <action android:name="my.action.string" />
        </intent-filter>
</receiver>

該動作永遠不會同時是android.provider.Telephony.SMS_RECEIVEDmy.action.string

改變這個:

if (action.equals(SMS_RECEIVED) && action.equals("my.action.string")) {

對此:

if (action.equals(SMS_RECEIVED) || action.equals("my.action.string")) {

此外,您不是在手動創建的Intent中發送pdus ,因此當您調用bundle.get("pdus") ,它將返回null。 然后,當您調用pdus.length ,它將拋出NullPointerException。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM