[英]How to listen to change in time in Android
如果手機時間有所改變,我需要做一些動作。 我如何傾聽時間變化?
更具體地說,我想在用戶輸入特定日期時發送短信。
我通過服務運行它。 關鍵是我需要經常檢查日期是否已發送短信
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);
}
}
使用操作"android.intent.action.TIME_SET"
創建BroadCastReceiver並設置Receiver類。
在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");
}
}
getActivity()。registerReceiver(networkreceiever,new IntentFilter(“android.intent.action.TIME_SET”));
但問題是,在更改日期時,接收器已經被銷毀,因為我在暫停活動時取消注冊接收器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.