美文网首页日历
android 设置系统闹钟和系统日历提醒

android 设置系统闹钟和系统日历提醒

作者: lesliefang | 来源:发表于2020-08-11 21:46 被阅读0次

    现在有一个定时提醒的功能, 用 AlarmManager 自己来做,有多少坑做过的都知道。(应用被kill, 应用保活,息屏,关机重启,多版本兼容问题。。。)。要自己做一个完善的不是 1-2天就能搞定的。当然如果是应用内简单的定时执行,定时提醒 AlarmManager 还是很好用的。

    https://www.jianshu.com/p/1f919c6eeff6

    对于这种需求可以调用系统闹钟或用系统日历的提醒事件来做。

    日历提醒功能可以直接用 Intent 起日历提醒界面,这样最简单,不需要权限。

    private void OpenCalendar() {
        Calendar beginTime = Calendar.getInstance();//开始时间
        beginTime.clear();
        beginTime.set(2014,0,1,12,0);//2014年1月1日12点0分(注意:月份0-11,24小时制)
        Calendar endTime = Calendar.getInstance();//结束时间
        endTime.clear();
        endTime.set(2014,1,1,13,30);//2014年2月1日13点30分(注意:月份0-11,24小时制)
        Intent intent = new Intent(Intent.ACTION_INSERT)
                .setData(Uri.parse("content://com.android.calendar/events"))
                .putExtra("beginTime", beginTime.getTimeInMillis())
                .putExtra("endTime", endTime.getTimeInMillis())
                .putExtra("title", "标题")
                .putExtra("description", "地点");
        startActivity(intent);
    }
    

    调用API 直接设置需要动态申请权限
    https://www.cnblogs.com/loaderman/p/10489592.html

    https://developer.android.com/guide/topics/providers/calendar-provider

    设置系统闹钟需要 SET_ALARM 权限

    <uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
    
    Date date = sf.parse(sDate + sTime);
    Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM);
    intent.putExtra(AlarmClock.EXTRA_HOUR, 11);
    intent.putExtra(AlarmClock.EXTRA_MINUTES, 59);
    intent.putExtra(AlarmClock.EXTRA_MESSAGE, "hello world");
    intent.putExtra(AlarmClock.EXTRA_VIBRATE, true);
    intent.putExtra(AlarmClock.EXTRA_SKIP_UI, true);
    if (intent.resolveActivity(getPackageManager()) != null) {
            startActivity(intent);
    }
    

    取消闹钟用 AlarmClock.ACTION_DISMISS_ALARM

    相关文章

      网友评论

        本文标题:android 设置系统闹钟和系统日历提醒

        本文链接:https://www.haomeiwen.com/subject/ingddktx.html