怎么听的时间来改变机器人 [英] How to listen to change in time in Android

查看:145
本文介绍了怎么听的时间来改变机器人的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果手机的时间已经改变,我需要做一些动作。我怎么听时间的变化?

更具体地讲,我想发短信,当谈到具体日期用户输入。

我通过服务运行。问题的关键是,我需要经常检查,如果日期已经到了发短信

 进口java.text.SimpleDateFormat的;
进口java.util.Date;

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

公共类SmsService延伸服务{
    字符串日期,messege,numberphone;
    @覆盖
    公众的IBinder onBind(意向为arg0){
        // TODO自动生成方法存根
        返回null;
    }

    @覆盖
    公众诠释onStartCommand(意向意图,诠释标志,诠释startId){
        日期= intent.getStringExtra(日);
        串[] dateArray = date.split(,);
        日期日期时间=新的日期();


        如果(dateArray [0] .equals(Integer.toString(da​​teTime.getDate(
                )))及&安培; dateArray [1] .equals(Integer.toString(da​​teTime.getMonth(
                )))及&安培; dateArray [2] .equals(Integer.toString(da​​teTime.getYear())))
            sendSMS(intent.getStringExtra(numberphone),intent.getStringExtra(信息));
        返回super.onStartCommand(意向,标志,startId);
    }



    @燮pressWarnings(德precation)
    私人无效sendSMS(字符串phoneNumber的,字符串消息)
    {
        PendingIntent PI = PendingIntent.getActivity(此,0,
                新的意图(这一点,SmsActivity.class),0);

        SmsManager的短信= SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber的,空,消息,PI,NULL);
    }


}
 

解决方案

创建一个动作一个BroadcastReceiver android.intent.action.TIME_SET,并设置接收器类。

在AndroidManifest文件,

 <接收机器人:名称=。MyReceiver>
            <意向滤光器>
                <作用机器人:名称=android.intent.action.TIME_SET/>
            &所述; /意图滤光器>
 < /接收器>
 

您的BroadcastReceiver类

MyReceiver.java

 公共类MyReceiver扩展的BroadcastReceiver {

    @覆盖
    公共无效的onReceive(最终上下文为arg0,意图ARG1){
        Log.d(MyReceiver,时间已更改);
    }
}
 

If the phone time has changed, I need to do some actions. How do I listen for time change?

More specifically, I want to send an SMS when comes specific date that user input.

I run it through the Service. The point is I need always check if the date has come to send the 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);        
    }  


}

解决方案

Create a BroadCastReceiver with action "android.intent.action.TIME_SET" and set the Receiver class.

In AndroidManifest file,

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

Your BroadCastReceiver Class

MyReceiver.java

public class MyReceiver extends BroadcastReceiver{

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

这篇关于怎么听的时间来改变机器人的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆