信不过你开车
信不过你开车
  • 发布:2015-05-07 12:46
  • 更新:2022-08-21 20:31
  • 阅读:28028

分享一个Android原生日历提醒插入案例。。。求个iOS的??谢谢。。。。。

分类:Native.js

一个简单的原生日历提醒插入。。。。native.js调用原生实现。。。。

<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="utf-8">  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
        <title></title>  
        <script src="js/mui.min.js"></script>  
        <link href="css/mui.min.css" rel="stylesheet" />  
        <script type="text/javascript" charset="utf-8">  
            mui.init();  
        </script>  
    </head>  

    <body>  
        <button onclick="addEvent()"> 插入事件</button>  
    </body>  
    <script>  
        var calanderURL = "content://com.android.calendar/calendars";  
        var calanderEventURL = "content://com.android.calendar/events";  
        var calanderRemiderURL = "content://com.android.calendar/reminders";  
        var calId;  

        function addEvent() {  
                var Cursor = plus.android.importClass("android.database.Cursor");  
                var Uri = plus.android.importClass("android.net.Uri");  
                var Calendar = plus.android.importClass("java.util.Calendar");  
                var main = plus.android.runtimeMainActivity();  
                var userCursor = plus.android.invoke(main.getContentResolver(), "query", Uri.parse(calanderURL), null, null, null, null);  
                if (plus.android.invoke(userCursor, "getCount") <= 0) {  
                    console.log("添加账号" + plus.android.invoke(userCursor, "getCount"));  
                    initCalendars();  
                } else {  
                    console.log("开始插入:" + plus.android.invoke(userCursor, "getCount"));  
                    plus.android.invoke(userCursor, "moveToLast");  
                    calId = plus.android.invoke(userCursor, "getString", plus.android.invoke(userCursor, "getColumnIndex", "_id"));  
                    var ContentValues = plus.android.importClass("android.content.ContentValues");  
                    var events = new ContentValues();  
                    events.put("title", "测试中==》呵呵");  
                    events.put("description", "Frankie受空姐邀请,今天晚上10点以后将在Sheraton交流.lol~");  
                    // 插入账户  
                    events.put("calendar_id", calId);  
                    console.log(calId);  
                    events.put("eventLocation", "地球-华夏");  
                    var mCalendar = Calendar.getInstance();  
                    plus.android.invoke(mCalendar, "set", Calendar.HOUR_OF_DAY, 11);  
                    plus.android.invoke(mCalendar, "set", Calendar.MINUTE, 0);  
                    var start = plus.android.invoke(plus.android.invoke(mCalendar, "getTime"), "getTime");  
                    var end = plus.android.invoke(plus.android.invoke(mCalendar, "getTime"), "getTime");  
                    events.put("dtstart", start);  
                    events.put("dtend", end);  
                    events.put("hasAlarm", 1);  
                    events.put("eventTimezone", "Asia/Shanghai"); // 这个是时区,必须有,  
                    // 添加事件    
                    var newEvent = plus.android.invoke(plus.android.runtimeMainActivity().getContentResolver(), "insert", Uri.parse(calanderEventURL), events);  
                    // 事件提醒的设定  
                    var id = plus.android.invoke(newEvent, "getLastPathSegment");  
                    var values = new ContentValues();  
                    values.put("event_id", id);  
                    // 提前10分钟有提醒  
                    values.put("minutes", "10");  
                    values.put("method", "1");  
                    plus.android.invoke(main.getContentResolver(), "insert", Uri.parse(calanderRemiderURL), values);  
                    mui.toast("插入事件成功,可打开本地日历查看");  
                }  
            }  
            //添加账户  

        function initCalendars() {  
            var TimeZone=plus.android.importClass("java.util.TimeZone");  
            var timeZone = TimeZone.getDefault();  
            var  ContentValues=plus.android.importClass("android.content.ContentValues");     
            var value = new ContentValues();  
            var Calendars=plus.android.importClass("android.provider.CalendarContract.Calendars");  
            value.put("name", "yy");  
            value.put("account_name", "hehe@gmail.com");  
            value.put("account_type", "com.android.exchange");  
            value.put("calendar_displayName", "mytt");  
            value.put("visible", 1);  
            value.put("calendar_color", -9206951);  
            value.put("calendar_access_level","700");  
            value.put("sync_events", 1);  
            value.put("calendar_timezone",plus.android.invoke(timeZone, "getID"));  
            value.put("ownerAccount","hehe@gmail.com");  
            value.put("canOrganizerRespond", 0);  
            var Uri=plus.android.importClass("android.net.Uri");  
            var calendarUri=Uri.parse("content://com.android.calendar/calendars");  
            var buildUpon = plus.android.invoke(calendarUri, "buildUpon");  
            var CalendarContract = plus.android.importClass("android.provider.CalendarContract");  
            plus.android.invoke(buildUpon, "appendQueryParameter", CalendarContract.CALLER_IS_SYNCADAPTER, "true");  
            plus.android.invoke(buildUpon, "appendQueryParameter", "account_name", "hehe@gmail.com");  
            plus.android.invoke(buildUpon, "appendQueryParameter", "account_type", "com.android.exchange");  
            calendarUri = plus.android.invoke(buildUpon, "build");  
            plus.android.invoke(plus.android.runtimeMainActivity().getContentResolver(), "insert", calendarUri, value);  
            mui.toast("添加账号成功");  
        }  
    </script>  

</html>
9 关注 分享
藏马 DCloud_heavensoft BoredApe 若末lan 菜鸡 8***@qq.com 亲亲范er Meier user_name

要回复文章请先登录注册

2***@qq.com

2***@qq.com

Uncaught java.lang.NullPointerException;at importClass android.provider.CalendarContract.Calendars at index.html:1 我这里报了这个错 把event_put里面改成了字符串还是不行 求解决

2016-11-29 12:37
leah_huang

leah_huang

同问,IOS版的该怎么写。。
2016-11-28 15:20
Thyme释念帅

Thyme释念帅

回复 DCloud_heavensoft :
请问下,这个问题解决了吗,我现在也遇见了这个情况
2016-09-20 10:37
唱唱

唱唱

Uncaught ReferenceError: android is not defined 是什么个情况,大家有遇到的吗...?
2016-08-08 15:59
hyhezhen

hyhezhen

我错了,应该改这句:
events.put("hasAlarm", 1);
1改为字符串就好
events.put("hasAlarm", "1");
2016-06-11 08:57
hyhezhen

hyhezhen

红米下面提示
Uncaught argument 2 should have type java.lang.Byte, got java.lang.Integer;at android.content.ContentValues.put at index.html:1
看起来像
events.put("calendar_id", calId);
calId 是 t java.lang.Integer 而不是 java.lang.Byte, 怎么转换呢?
2016-06-11 08:41
信不过你开车

信不过你开车 (作者)

回复 hyhezhen :
额,我这边没有小米的,没办法给你调。小米和华为的问题都会比较多吧。。。。
2015-08-03 09:36
hyhezhen

hyhezhen

我现在的项目需求是IOS
数遍验证下安卓效果,我的手机是红米NOTE,没显示界面,控制台提示: 开始插入:3 at index.html:34
没有成功显示。
2015-08-03 09:29
信不过你开车

信不过你开车 (作者)

回复 hyhezhen :
我也需求IOS版本的
2015-08-03 09:14
信不过你开车

信不过你开车 (作者)

回复 DCloud_heavensoft :
额。。。我这边没有小米note,我试过了,三星,THC,一加,索尼都可以把,,,,估计小米和华为的有些不行,,,
2015-08-03 09:14