使用sendTextMessage()时如何将数据传递给广播接收器
我使用了 intent.putExtra("key","value");
并且当 onReceive
函数调用 intent.getStringExtra("key") 的值时
为null。
我应该做什么?请帮忙。
注意:使用时sendBroadcast(new Intent(smsSent).putExtra("key","value"));
值已传递。
Activity .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
}
list .xml
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="SMS_SENT" />
<action android:name="SMS_DELIVERED" />
</intent-filter>
</receiver>
最佳答案
编辑:
我认为问题可能是您没有提到您的包裹。 在您的 list 中尝试一下:
<intent-filter>
<action android:name="your.package.name.SMS_DELIVERED" />
</intent-filter>
在您的代码中:
String smsDelivered = "your.package.name.SMS_DELIVERED";
将 your.package.name
替换为您的包名称!
希望有帮助:)
关于java - 使用 sendTextMessage() 将数据传递到广播接收器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19191794/