android - 为什么从活动传递到广播接收器时字符串值为空?
问题描述
我将一个值从活动传递给广播接收器:
我的活动代码:
String stringBuilder = "Hello";
String phone_no = "1234567890";
try{
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phone_no, null, stringBuilder, null, null);
Intent broadcastIntent = new Intent(contacts.this, Receiver.class);
broadcastIntent.putExtra("message",stringBuilder);
sendBroadcast(broadcastIntent);
}catch (Exception e) {
e.printStackTrace();
}
我的广播接收器代码:
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//String msg= intent.getStringExtra("message") //returns null
Bundle bundle = intent.getExtras();
if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
String msg= intent.getStringExtra("message") //returns null
if (bundle != null){
Object[] pdus = (Object[]) bundle.get("pdus");
if (pdus.length == 0) {
return;
}
// large message might be broken into many
SmsMessage[] messages = new SmsMessage[pdus.length];
StringBuilder sb = new StringBuilder();
for (int i = 0; i < pdus.length; i++) {
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
sb.append(messages[i].getMessageBody());
}
String sender = messages[0].getOriginatingAddress();
String message = sb.toString();
if (message.equals(msg)) {
//do something
}
}
Toast.makeText(context,message,Toast.LENGTH_SHORT).show(); //empty toast
}
}
这是我的清单:
<receiver
android:name=".Receiver"
android:enabled="true"
android:exported="true"
android:permission="android.permission.BROADCAST_SMS">
<intent-filter android:priority="2147483647" >
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
正如您所看到的key
,在这两种情况下都是相同的,当从活动传递时,值仍然在我的广播接收器中返回 null。我已经没有关于如何将值从活动传递到广播接收器的想法。请帮我。
我只想检查在我的广播接收器中接收String message = sb.toString();
到的消息 () 是否等于从活动 ( stringBuilder
) 发送的消息。
解决方案
为什么我收到一个空吐司?
您的stringBuilder
变量 - 您没有包含在代码中 - 为空。
推荐阅读
- google-apps-script - 无法在电子表格上创建可安装触发器
- python-3.x - RobotFramework:在 For 循环中使用变量列表
- c# - 为什么 sonarlint 建议结合 try...catch 语句?
- amazon-web-services - 如何更改 API Gateway 响应
- php - 如何使用 PHP 将文件池图像上传到 MySql?
- xml - 如何使用 Postman 可视化 XML SOAP 信封
- ios - 如何在iOS`URL`中获取“://之后的所有内容”
- javascript - 连接来自javascript中其他函数的字符串
- azure - 如何在 Azure 逻辑应用中的步骤之间传递值?
- arrays - 应用内购买恢复按钮恢复未购买的应用内