2012-04-25 10 views
1

電話時間が変更された場合は、いくつかの操作を行う必要があります。時間の変化を聞くにはどうすればいいですか?Androidで時刻を聴く方法

具体的には、ユーザーが入力した特定の日付が来たときにSMSを送信します。

私はそれをサービスを通じて実行します。ポイントは、日付がアクション"android.intent.action.TIME_SET"とBroadCastReceiverを作成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> 

あなた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" ));

しかし、問題は、レシーバの登録を解除しているために、レシーバが既に破棄されていることです。

関連する問題