2011-07-20 16 views
0

インテントをサービスからアクティビティに送信する際に問題が発生します。ここでは、コードです:サービスから送信されたインテントを受信する方法

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> 

問題があることですインテントが送信されても​​、onReceive()メソッドは呼び出されません。

ありがとう、Ivan。 com.someapp.MessagingActivity.NewMessageReceiver`:

答えて

0

は、今では `にjava.lang.ClassNotFoundExceptionでクラッシュ活動

IntentFilter filter = new IntentFilter(XMPPService.NEW_MESSAGE); 


    BroadcastReceiver mReceiver = new MessageReceiver(getApplicationContext()); 
     registerReceiver(mReceiver, filter); 
+0

でこの

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

を試してみてください。なぜなら、NewMessageReceiverは内部クラスなのですか? –

+0

Activtiyに受信者を登録するだけです。 – Rasel

+0

更新された回答を参照してください – Rasel