java - 使用 sendTextMessage() 将数据传递到广播接收器

标签 java android android-intent broadcastreceiver sms

使用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/

相关文章:

java - 双击textview android

android - Camera intent.getData()在部分设备返回null,主要在android 7.0

android - 电子邮件 Intent 的附加信息 - 首选项 XML

java - JSP中的UTF GET参数编码问题(JBoss 2.0.1)

android - 使用 Android L 和 Camera2 API 处理相机预览图像数据

java - 时区在 Windows 服务器中无法正常工作

java - Firebase_Auth_API 在 API 23 上不可用

android - 如何在后台服务中放置带有无限循环的线程

java - API 设计和身份验证注意事项

java - 封装,getter返回null或0