java - 如何在 Android 上使用 AlarmManager 在期望的日期显示 Toast

标签 java android alarmmanager android-broadcast

在我的应用程序中,我想在 Desired date 显示 Toast。为此,我知道我应该使用 AlarmManager
对于这个AlarmManager,我从互联网上找到了源代码。
在此源中,使用时间选择器为用户提供时间,但我希望获得静态时间。
我想在以下日期显示 toast :
日期:2017-10-26
时间:06:49:59

MainActivity 代码:

public class MainActivity extends AppCompatActivity {

    //the timepicker object
    TimePicker timePicker;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //getting the timepicker object
        timePicker = (TimePicker) findViewById(R.id.timePicker);

        //attaching clicklistener on button
        findViewById(R.id.buttonAlarm).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //We need a calendar object to get the specified time in millis
                //as the alarm manager method takes time in millis to setup the alarm
                Calendar calendar = Calendar.getInstance();
                if (android.os.Build.VERSION.SDK_INT >= 23) {
                    calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),
                            timePicker.getHour(), timePicker.getMinute(), 0);
                } else {
                    calendar.set(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH), calendar.get(Calendar.DAY_OF_MONTH),
                            timePicker.getCurrentHour(), timePicker.getCurrentMinute(), 0);
                }


                setAlarm(calendar.getTimeInMillis());
            }
        });
    }

    private void setAlarm(long time) {
        //getting the alarm manager
        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

        //creating a new intent specifying the broadcast receiver
        Intent i = new Intent(this, MyAlarm.class);

        //creating a pending intent using the intent
        PendingIntent pi = PendingIntent.getBroadcast(this, 0, i, 0);

        //setting the repeating alarm that will be fired every day
        am.setRepeating(AlarmManager.RTC, time, AlarmManager.INTERVAL_DAY, pi);
        Toast.makeText(this, "Alarm is set", Toast.LENGTH_SHORT).show();
    }
}

广播代码:

public class MyAlarm extends BroadcastReceiver {

    //the method will be fired when the alarm is triggerred
    @Override
    public void onReceive(Context context, Intent intent) {

        //you can check the log that it is fired
        //Here we are actually not doing anything
        //but you can do any task here that you want to be done at a specific time everyday
        Toast.makeText(context, "Alarm just fired", Toast.LENGTH_SHORT).show();
    }

}

我怎么可以呢?我是业余爱好者,请帮助我<3

最佳答案

根据您的选择创建一个日期并将其传递给您的方法 setAlarm()

findViewById(R.id.buttonAlarm).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");
    String dateInString = "26-10-2017 06:49:59";
    long alarmDate = 0L;
    try {
        Date d = sdf.parse(dateInString);
        alarmDate = d.getTime();
    } catch (ParseException e) {
        e.printStackTrace();
    }
}

关于java - 如何在 Android 上使用 AlarmManager 在期望的日期显示 Toast,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46952827/

相关文章:

android - 更改底部导航选择的 itemIconTinitcolor - androidx

android - 使用警报管理器启动服务,但前提是主应用程序未运行

java - 如何使用AJAX在java中显示MYSQL的数据

android - 在搭载 Android 7 的三星 S7 上使用 React Native 时 libjsc.so 中的 native 崩溃

android - 如何在将由 Android 处理的网站上创建日历事件(ics 或 vcs)?

java - future 日期的 Android 通知

android - 如何在 android 应用程序之外时提醒警报消息?

java - 如何在云上部署Maven Web服务?

java - 复制 pdf 时出现 iText 'java.io.IOException The document has no pages'

java - JAXB 实现