当前位置: 首页 > 知识库问答 >
问题:

空字符串从activity传递到广播接收器

庄嘉
2023-03-14

我正在尝试将一个字符串从一个activity传递给广播接收器类。我的代码:

活动.类:

Intent i=new Intent(this,MyReceiver.class);
i.putExtra("string","Hello I am John");
sendBroadcast(i);

MyReceiver.Class:

public class MyReceiver extends BroadcastReceiver {

 String temp="";

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

       temp=intent.getExtras().getString("string");

       Toast.makeText(context, temp, Toast.LENGTH_SHORT).show(); //completely empty

    }
  }

我的清单文件

 <receiver
     android:name=".MyReceiver"
     android:enabled="true"
     android:exported="true"
     android:permission="android.permission.BROADCAST_SMS">
    <intent-filter android:priority="6000">

                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
             
    </intent-filter>
</receiver>

当我执行代码时,toast显示为完全空的!为什么?

共有1个答案

邹书
2023-03-14

因此,当使用本地广播时,您必须传递一个意图过滤器,而不是传递上下文和目的地,因为基本上本地广播会向整个节目发送一个广播,而您会使用一个意图过滤器捕获这些广播,它的作用类似于密码,因此,不是:

Intent i = new Intent(this,MyReceiver.class);
i.putExtra("string","Hello I am John");
sendBroadcast(i);

在新的意图中传递一个键,如:

Intent i = new Intent("key-for-intent");
i.putExtra("string", "Hello I am John");
LocalBroadcastManager.getInstance(getApplicationContext()).sendBroadcast(i);

现在,您要接收意图,为此,您必须创建一个新的BroadcastReceiver,然后您必须注册它,并且在检测到广播时传递一个意图过滤器来捕获广播,意图过滤器总是应该与发送广播时在意图中传递的过滤器相同。

您可以在onCreate中放入以下行:

LocalBroadcastManager.getInstance(getApplicationContext()).registerReceiver(name-of-reciever, new IntentFilter("key-for-intent"));
 类似资料:
  • 我在一个独立于主活动的文件中注册了一个广类型接收器,并且基于在广类型接收器中接收到的通知,我想在主活动中执行一些操作。 我的问题是,将通知从广播接收器传递到主活动的推荐方式是什么?是否应该在iam在广播接收器文件中注册的每个操作中创建一个公共方法?或者应该使用将在主活动中实现的接口。 注:广泛的演员接受者登记为7个行动

  • 问题内容: 有人可以解释和之间的确切区别吗? 在什么情况下我们必须使用每个Receiver类? 问题答案: 和之间只有一个区别。 当您收到内部广播方法时, 假设, BroadcastReceiver : 它 不保证 该 CPU将保持清醒 ,如果你启动一些长时间运行的进程。CPU可能会立即回到睡眠状态。 WakefulBroadcastReceiver : 这是 保证 该 CPU将保持清醒 ,直到你

  • 本文向大家介绍Android BroadcastReceiver接收收到短信的广播,包括了Android BroadcastReceiver接收收到短信的广播的使用技巧和注意事项,需要的朋友参考一下 一、知识介绍   1、broadcastReceiver是广播接受者,四大组件之一。   2、Android中内置了很多系统级别的广播,可以在应用程序中得到各种系统的状态信息。   3、使用场景:  

  • 我是Android开发人员,我使用信号R与服务器通信,并在服务器发出数据时获取数据: 当我从服务器获取Boolean(isVideoEnable是Boolean)并将其传递给BroadcastReceiver时,我得到了RunTimeError,说明如下: **HubConnection断开连接,WebSocket连接停止,代码为null,原因为“无法将java.lang.Boolean转换为Bo

  • 我试图在php脚本和c程序之间传递参数。我的php脚本如下所示 然后我想我的c程序返回给我一个字符串(但我真的不知道怎么做),你能帮忙吗?

  • 问题内容: 背景: 我创建了一个非常简单的前端,用户可以在其中输入字符串。输入并单击“检查”按钮后,我想将此字符串作为JSON传递给python字符串,它将在其中进行SQL查找。根据SQL外观,python脚本应传递一个布尔值,该值应更改?到✔或✘。 题: 一旦按下“检查”按钮作为JSON到Python脚本,然后如何将字符串从Python传递到HTML,将?更改为✔或✘,如何传递字符串? 研究: