android - 如何从广播接收器向正在运行的 Activity 发送数据,

标签 android android-activity broadcastreceiver

我能够很好地接收 C2DM 消息,但我想将数据发送到正在运行的 Activity ,即当 Activity 正在运行时,如果接收方收到 C2DM 消息,它会将数据发送到正在运行的 Activity 。接收器的代码是(代码中没有错误):

public class C2dmreceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        Log.w("C2DM", "Message Receiver called");
        if ("com.google.android.c2dm.intent.RECEIVE".equals(action)) 
        {
            final String payload = intent.getStringExtra("key1");   
            Log.d("C2DM", "message = " + payload );
       }
     }}

我在 Activity 中尝试过这样尝试在 Activity 中注册接收器,以便接收器可以发送数据并且正在运行的 Activity 可以接收数据:-

C2dmreceiver c2dmr = new C2dmreceiver();
Registration.this.registerReceiver(c2dmr, new IntentFilter());

我不知道要在 IntentFilter() 中放入什么,也不知道我还必须在 Activity 代码和接收方代码中放入什么,以便在 Activity 运行时接收方收到一些 C2DM 消息可以将数据发送到正在运行的 Activity 。

那么,请告诉我要放入 Activity 和 Receiver 中的代码,也可能在 list 中,以便来自 Receiver 的数据可以发送到正在运行的 Activity。

非常感谢任何建议。

最佳答案

首先,在 Activity 中订阅 c2dm 接收器并不是最好的主意。在 list 中做。为了将数据传递给 Activity ,您可以在 Activity 中创建静态字符串字段并在那里设置字符串。

你可以这样做:

Activity

public static YourActivity mThis = null;
@Override
protected void onResume() {
    super.onResume();
    mThis = this;
}
@Override
protected void onPause() {
    super.onPause();
    mThis = null;
}

在您的 BroadcastReceiver 中:

@Override
public void onReceive(Context context, Intent intent) {
...
if (YourActivity.mThis != null) {
    ((TextView)YourActivity.mThis.findViewById(R.id.text)).setText("received c2dm");
}
else {
...
}

关于android - 如何从广播接收器向正在运行的 Activity 发送数据,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8570823/

相关文章:

android - 如何使对话框适合图像?

android - 使用 BroadcastReceiver 创建通知

android - 在 android activity 生命周期中应该在哪里关闭数据库?

android - 现有 Activity 实例必须处理隐式 NFC Intent

Android - 短信广播接收器

android服务、广播和 Activity

android - java.io.IOException : Cannot run program CreateProcess error=2, 系统找不到android studio上指定的文件

c# - Xamarin 设置相机分辨率

android - 如何在多个通知的状态栏中显示单个通知图标

android - Android:在不同的 Activity 中播放很多短音轨