【问题标题】:Passing data to broadcast receiver using sendTextMessage()使用 sendTextMessage() 将数据传递给广播接收器
【发布时间】:2013-10-04 22:33:00
【问题描述】:

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

manifest.xml

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

【问题讨论】:

    标签: java android android-intent broadcastreceiver sms


    【解决方案1】:

    编辑:

    我认为问题可能在于您没有提及您的包裹。 在你的清单中试试这个:

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

    在你的代码中:

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

    用你的包名替换your.package.name! 希望有帮助:)

    【讨论】:

    • 对不起,请检查编辑问题,这不是打字错误。谢谢
    • 检查这个question我是你找到的东西。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多