android - 短信接收广播接收器中止

时间:2012-01-26 03:55:03

标签: android broadcast

我正在开发一个Android短信应用,它不会将信息保存在收件箱中。 我需要使用webservice调用来验证消息的内容,然后删除广播。

在SMSReceiver的onReceive()中

 if (messageBody.equals("somedata"))
    {

         Intent i  = new Intent(context,Webservice.class);//webservice validation
         i.putExtra("messageBody",messageBody)
         startService(i);  

    // Stop it being passed to the main Messaging inbox
         abortBroadcast();
    }

Web服务调用的Intentservice永远不会被执行。接收器在此之前被中止。 我是android的新手,所以请告诉我在广播接收器(SMS_RECEIVE)的onReceive()中启动的intent服务中是否正确进行webservice调用。

2 个答案:

答案 0 :(得分:1)

使用日志记录确保equals()返回true。如果是这种情况,可能是你在onReceive()中做了一些耗时的事情,并且BroadcastReceiver被杀死了。来自文档:

http://developer.android.com/reference/android/content/BroadcastReceiver.html#onReceive(android.content.Context,android.content.Intent)

  

该函数通常在其进程的主线程内调用,因此您永远不应该在其中执行长时间运行的操作(在考虑阻塞接收器之前系统允许的超时为10秒,以及被杀了。

答案 1 :(得分:0)

你的messageBody变量可能是空格问题,

请试试这个,

if (messageBody.trim().equals("somedata"))