- 缘起
需要在app里弄个定时提醒功能 - 过程
在问答社区看到一个大佬分享的安卓插入日历提醒的按理
点击这里过去看看??? - 但是
看得有点晕,很多代码都不知道在干嘛(毕竟不懂原生)
开始的时候就原样复制了一遍代码,也没怎么看,心想着能把项目完成了再说 - 后来发现
没登录日历账号的手机不能设置提醒,反正就是各种报错
好了,不说心路历程了
直接上干货
(html和引入date picker就省略了哈)(function($) { var setcalendar = function() { $.toast('功能加载中,请稍后', { type: 'div', duration: 1000 }); }; $.plusReady(function() { var calanderURL = 'content://com.android.calendar/calendars', ContentValues = plus.android.importClass("android.content.ContentValues"), Uri = plus.android.importClass('android.net.Uri'), Calendar = plus.android.importClass('java.util.Calendar'), main = plus.android.runtimeMainActivity(), userCursor = plus.android.invoke(main.getContentResolver(), 'query', Uri.parse(calanderURL), null, null, null, null), userCursor_count = plus.android.invoke(userCursor, 'getCount'), TimeZone = plus.android.importClass('java.util.TimeZone'), TimeZone_str = plus.android.invoke(TimeZone.getDefault(), 'getID'); setcalendar = function(title, description, date_str) { if(userCursor_count <= 0) {//如果没有日历账户 var account = new ContentValues(), buildUpon = plus.android.invoke(Uri.parse(calanderURL), 'buildUpon'), CalendarContract = plus.android.importClass('android.provider.CalendarContract'); plus.android.invoke(buildUpon, 'appendQueryParameter', CalendarContract.CALLER_IS_SYNCADAPTER, 'true'); plus.android.invoke(buildUpon, 'appendQueryParameter', 'account_name', 'someone@something.com'); plus.android.invoke(buildUpon, 'appendQueryParameter', 'account_type', 'com.android.exchange'); //设置账户信息 account.put('name', 'someone'); account.put('account_name', 'someone@something.com'); account.put('account_type', 'com.android.exchange'); account.put('calendar_displayName', 'someone_calendar'); account.put('visible', 1); account.put('calendar_color', '-9206951'); account.put('calendar_access_level', '700'); account.put('sync_events', 1); account.put('calendar_timezone', TimeZone_str); account.put('ownerAccount', 'someone@something.com'); account.put('canOrganizerRespond', 0); //保存账户信息 plus.android.invoke(main.getContentResolver(), 'insert', plus.android.invoke(buildUpon, 'build'), account); //重新定义userCursor userCursor = plus.android.invoke(main.getContentResolver(), 'query', Uri.parse(calanderURL), null, null, null, null); //重新定义userCursor_count userCursor_count++; } plus.android.invoke(userCursor, 'moveToLast'); var calId = plus.android.invoke(userCursor, 'getString', plus.android.invoke(userCursor, 'getColumnIndex', '_id')), events = new ContentValues(), mCalendar = Calendar.getInstance(), date = date_str.split(/\s{1}|:|-/g); plus.android.invoke(mCalendar, 'set', Calendar.YEAR, ~~date[0]); plus.android.invoke(mCalendar, 'set', Calendar.MONTH, ((~~date[1]) - 1)); plus.android.invoke(mCalendar, 'set', Calendar.DATE, ~~date[2]); plus.android.invoke(mCalendar, 'set', Calendar.HOUR_OF_DAY, ~~date[3]); plus.android.invoke(mCalendar, 'set', Calendar.MINUTE, ~~date[4]); var start = plus.android.invoke(plus.android.invoke(mCalendar, 'getTime'), 'getTime'), end = plus.android.invoke(plus.android.invoke(mCalendar, 'getTime'), 'getTime'); //设置日历事件 events.put('title', title); events.put('description', description); events.put('calendar_id', calId); events.put('dtstart', start); events.put('dtend', end); events.put('hasAlarm', 1); events.put('eventTimezone', TimeZone_str); var newEvent = plus.android.invoke(main.getContentResolver(), 'insert', Uri.parse('content://com.android.calendar/events'), events); var id = plus.android.invoke(newEvent, 'getLastPathSegment'); var values = new ContentValues(); values.put('event_id', id); values.put('minutes', '5'); values.put('method', '1'); plus.android.invoke(main.getContentResolver(), 'insert', Uri.parse('content://com.android.calendar/reminders'), values); $.toast('设置提醒成功'); } }); $.ready(function() { $('.mui-content').on('tap', 'button.mui-btn', function() { var picker = new $.DtPicker(); picker.show(function(rs) { setcalendar('测试提醒标题', '测试提醒内容', rs.text); picker.dispose(); }); }); }); })(mui);
- 最后说一句
- 打包的时候记得勾选日历权限
- 这个问题坑死我了
菜鸡
- 发布:2017-09-03 01:06
- 更新:2022-04-12 13:12
- 阅读:8615
18 个评论
要回复文章请先登录或注册
1***@qq.com
DCloud_heavensoft
1***@qq.com
1***@qq.com
efeea
t***@sina.com
我是大笨蛋
崔尐磊
崔尐磊
崔尐磊