【问题标题】:How to receive an Intent sent by a Service如何接收服务发送的 Intent
【发布时间】:2011-07-20 10:18:02
【问题描述】:

我在将 Intent 从 Service 发送到 Activity 时遇到了一些问题。代码如下:

Intent intent = new Intent(context,
MessagingActivity.NewMessageReceiver.class);
intent.setAction(XMPPService.NEW_MESSAGE);
intent.putExtra("MESSAGE", body);
intent.putExtra("FROM", from);
context.sendBroadcast(intent);

上下文是一项服务 接收方代码(活动中的内部类):

public class NewMessageReceiver extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {
        if (intent.getAction().equals(XMPPService.NEW_MESSAGE))
        {
            String message = intent.getStringExtra("MESSAGE");
            String from = intent.getStringExtra("FROM");
            // TODO: add screen switch
            addMessage(true, from, message);
        }
    }
}

Android 清单条目:

<receiver 
    android:name=".MessagingActivity.NewMessageReceiver">
    <intent-filter>
        <action android:name="com.someapp.XMPPService.NEW_MESSAGE"/>
    </intent-filter>
</receiver>

问题是虽然发送了Intent,但是没有调用onReceive()方法。

谢谢,伊万。

【问题讨论】:

    标签: android service android-activity broadcastreceiver


    【解决方案1】:

    试试这个

    Intent intent = new Intent(XMPPService.NEW_MESSAGE);
    intent.putExtra("MESSAGE", body);
    intent.putExtra("FROM", from);
    sendBroadcast(intent);
    

    在活动中

    IntentFilter filter = new IntentFilter(XMPPService.NEW_MESSAGE);
    
    
        BroadcastReceiver   mReceiver = new MessageReceiver(getApplicationContext());
            registerReceiver(mReceiver, filter);
    

    【讨论】:

    • 现在它会因java.lang.ClassNotFoundException: com.someapp.MessagingActivity.NewMessageReceiver 而崩溃。是不是因为 NewMessageReceiver 是一个内部类?
    • 只需在 Activtiy 中注册一个接收者,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多