我正在开发一个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调用。
答案 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"))