2014-05-10 34 views
0

我开始从一些的onReceive服务,当服务将结束我想从该服务的一些值回的onReceive()..启动服务并返回一个值

这就是我的代码:

public class SmsListener extends BroadcastReceiver { 

     public void onReceive(Context context, Intent intent) { 

      Bundle bundle = intent.getExtras(); 

      Object messages[] = (Object[]) bundle.get("pdus"); 
      SmsMessage smsMessage[] = new SmsMessage[messages.length]; 
      for (int n = 0; n < messages.length; n++) { 
       smsMessage[n] = SmsMessage.createFromPdu((byte[]) messages[n]); 
      } 

      //show first message 
      Toast toast = Toast.makeText(context, "Received SMS: " + smsMessage[0].getMessageBody(), Toast.LENGTH_LONG); 
      toast.show(); 
      String s=smsMessage[0].getMessageBody(); 
      //START A SERVICE 
      Intent serviceIntent = new Intent(context,Lineeq.class); 
      serviceIntent.putExtra("message",s); 
      context.startService(serviceIntent); 

//这里我需要从服务

  abortBroadcast(); 


     } 


            any ideas? 
            Thanks. 

回答

1

BroadcastReceiver会后onReceive()回报消失一毫秒或两个得到的值。你不能从服务中返回结果,更不用说以某种方式阻止等待它的onReceive()方法。

另外,请记住,abortBroadcast()是无用的starting with Android 4.4,因为你不能中止短信广播。

+0

因此,数据将被转移到接下来要去的服务之后?我认为你弄错了我编辑的问题(“从服务中获得一些价值回到OnReceive()”).. – mynavy

+0

@mynavy:我不知道它是什么“onReceive()”会这个'BroadcastReceiver'实例将被框架释放,并最终被垃圾收集。之后的某个时间,服务将运行并执行一些操作。 – CommonsWare

+0

您有任何建议如何处理它?得到我需要的短消息,他的设备将计算一些公式与他通过短信获得的数据,它将在后台服务... – mynavy