仅从BroadcastReceiver发送一次SMS

时间:2013-04-18 19:11:33

标签: android broadcastreceiver

我在这里看到了Commonwares LocationPoller演示 github.com/commonsguy/cwac-locpoll /

这里LocationReceiver我正在检查位置是否在指定区域内。 如果不在该区域,我会向电话号码发送短信(SMS)。

但它是连续发送短信(SMS),因为它在每个特定时间间隔收到新位置。所以我定义了一个类变量flag = 0(初始)

            public class LocationReceiver extends BroadcastReceiver {
                int flag=0;
            public void onReceive(Context context, Intent intent) {

            ............


            if( flag==0)    //center of campus 
                      {
                          checkArea(loc,"500","22.599669","72.820473","5556","Your ward is out of College campus");
                          Toast.makeText(context, "You Have Moved out",Toast.LENGTH_SHORT);
                          flag=1;
                      }
                }
            }

但它无法正常工作,它仍然会不断发送短信。 我该怎么办 ?

2 个答案:

答案 0 :(得分:2)

使用SharedPreferences发送消息时保存unix时间戳,以便下次触发广播时检查是否存在所述时间戳。如果时间戳不存在或者足够老(实际时间 - 保存的时间戳> =您定义的某些Threshshold),则只发送消息,在发送消息时更新或创建时间戳。

答案 1 :(得分:1)

如果您必须发送短信,则可以使用持久性存储来存储状态,并且每次收到存储通知检查。