2012-04-25 3 views
1

Если время телефона изменилось, мне нужно сделать некоторые действия. Как прослушать изменение времени?Как слушать изменения во времени в Android

В частности, я хочу отправить SMS, когда приходит конкретная дата ввода этого пользователя.

Я запускаю его через Службу. Дело в том, мне нужно всегда проверять, если дата пришло отправить SMS

import java.text.SimpleDateFormat; 
import java.util.Date; 

import android.app.PendingIntent; 
import android.app.Service; 
import android.content.Intent; 
import android.os.IBinder; 
import android.telephony.gsm.SmsManager; 

public class SmsService extends Service{ 
    String date, messege, numberphone; 
    @Override 
    public IBinder onBind(Intent arg0) { 
     // TODO Auto-generated method stub 
     return null; 
    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     date=intent.getStringExtra("date"); 
     String[] dateArray = date.split(","); 
     Date dateTime = new Date(); 


     if(dateArray[0].equals(Integer.toString(dateTime.getDate(
       ))) &&dateArray[1].equals(Integer.toString(dateTime.getMonth(
       ))) && dateArray[2].equals(Integer.toString(dateTime.getYear()))) 
      sendSMS(intent.getStringExtra("numberphone"),intent.getStringExtra("message")); 
     return super.onStartCommand(intent, flags, startId); 
    } 



    @SuppressWarnings("deprecation") 
    private void sendSMS(String phoneNumber, String message) 
    {   
     PendingIntent pi = PendingIntent.getActivity(this, 0, 
       new Intent(this, SmsActivity.class), 0); 

     SmsManager sms = SmsManager.getDefault(); 
     sms.sendTextMessage(phoneNumber, null, message, pi, null);   
    } 


} 

ответ

3

Создать BroadcastReceiver с действием "android.intent.action.TIME_SET" и установить класс приемника.

В AndroidManifest файле

<receiver android:name=".MyReceiver"> 
      <intent-filter > 
       <action android:name="android.intent.action.TIME_SET"/> 
      </intent-filter> 
</receiver> 

Ваш BroadcastReceiver Класс

MyReceiver.java

public class MyReceiver extends BroadcastReceiver{ 

    @Override 
    public void onReceive(final Context arg0, Intent arg1) { 
     Log.d("MyReceiver", "Time Changed"); 
    } 
} 
0

getActivity(). RegisterReceiver (networkreceiever, новый IntentFilter ("android.intent.action.TIME_SET"));

Но проблема в том, что при изменении даты приемник уже уничтожен, так как я отменяю регистратор на паузу активности.

Смежные вопросы