【问题标题】:How to listen to change in time in Android如何在 Android 中及时聆听变化
【发布时间】:2014-09-18 16:01:05
【问题描述】:

如果电话时间变了,我需要做一些动作。如何聆听时间变化?

更具体地说,我想在用户输入的特定日期到来时发送短信。

我通过服务运行它。关键是我需要经常检查是否到了发送短信的日期

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 android-intent


    【解决方案1】:

    使用操作"android.intent.action.TIME_SET" 创建一个广播接收器并设置接收器类。

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

    【讨论】:

      【解决方案2】:

      getActivity().registerReceiver(networkreceiever,new IntentFilter("android.intent.action.TIME_SET"));

      但问题是,在更改日期时接收器已经被销毁,因为我在活动暂停时取消注册接收器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 2013-08-21
        • 2020-10-12
        • 1970-01-01
        相关资源
        最近更新 更多