2013-04-18 43 views
0

发送短信只有一次,我看到Commonwares LocationPoller演示这里 github.com/commonsguy/cwac-locpoll/从广播接收器

在这里,在LocationReceiver我检查的位置是否在指定的区域或没有。 如果它不在该区域,我会发送短信(SMS)到电话号码。

但它是在每个特定的时间间隔内接收新位置时不断发送文本消息(SMS)。所以我定义的类varible flag = 0(initally)

  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; 
         } 
       } 
      } 

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

回答

1

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

2

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

+0

在'MyPreference'中扩展'PreferenceActivity'如何在不使用XML的情况下添加首选项,如addPreferencesFromResource(R.xml.preferences); '由于其唯一的首选 – fz8975

+0

SharedPreferences!= PrefenceActivity。 http://www.vogella.com/articles/AndroidFileBasedPersistence/article.html – Machinarius

+0

@Machinaruis谢谢......但我怎么看,如果时间戳存在与否>? – fz8975