android+日历+events+无法保存,mui(准确的说是html5+)Android原生日历提醒插入案例踩坑经历...

(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);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值