2012-04-25 5 views
1

전화 시간이 변경된 경우 몇 가지 조치를 취해야합니다. 시간 변경을 어떻게들을 수 있습니까?Android에서 시간 변경 수신 방법

특히 사용자가 입력 한 특정 날짜에 SMS를 보내고 싶습니다.

서비스를 통해 실행합니다. 요점은 날짜가 동작 "android.intent.action.TIME_SET"와 브로드 캐스트 리시버를 만들기 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

를 전송하고 수신기 클래스를 설정하는 올 경우 항상 확인할 필요가있다. AndroidManifest를 파일에서

,

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

귀하의 브로드 캐스트 리시버 클래스

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"));

하지만 문제는 날짜를 변경하면 수신자가 활동을 일시 중지 할 때 등록을 취소함에 따라 이미 파괴 된 것입니다.