1

sendTextMessage() 私が使用intent.putExtra("key","value");したときにブロードキャストレシーバーにデータを渡す方法onReceiveと、値の呼び出された関数intent.getStringExtra("key")nullの場合。

どうすればいいですか?助けてください。

注: 使用sendBroadcast(new Intent(smsSent).putExtra("key","value"));すると、値が渡されました。

アクティビティ.java

void send_sms(){
String smsSent = "SMS_SENT";
String smsDelivered = "SMS_DELIVERED";
PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
new Intent(smsSent).putExtra("key1", "value1"), 0);
PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
new Intent(smsDelivered).putExtra("key2", "value2"), 0);

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage("5556", null, "hi", sentPI, deliveredPI);
}

MyReceiver.java

public class MyReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

 Log.i("my receiver"," "+intent.getAction());// this statement works fine
 Log.i("my receiver"," "+intent.getStringExtra("key1"));// null is returned
}

マニフェスト.xml

<receiver android:name=".MyReceiver">
<intent-filter>
    <action android:name="SMS_SENT" />
    <action android:name="SMS_DELIVERED" /> 
    </intent-filter>
</receiver>
4

1 に答える 1

0

編集:

問題は、パッケージについて言及していないことだと思います。マニフェストでこれを試してください:

<intent-filter>
    <action android:name="your.package.name.SMS_DELIVERED" />
</intent-filter>

そしてこれはあなたのコードで:

String smsDelivered = "your.package.name.SMS_DELIVERED";

your.package.nameパッケージ名に置き換えてください!それが役立つことを願っています:)

于 2013-10-05T02:10:37.613 に答える