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

一个简单的原生日历提醒插入。。。。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>  
5 分享 关注
藏马 DCloud_heavensoft 五块钱的果汁 若末lan 菜鸡
瑶瑶

瑶瑶

这个在uni-app的项目工程下应该怎么运用????
0 赞 2019-02-05 14:53
拜仁已伤

拜仁已伤

打包是不行的
0 赞 2018-10-11 11:09
郁桦杰

郁桦杰

求IOS的日程提醒
0 赞 2018-05-22 12:24
崔尐磊

崔尐磊

大神ios的这么写
0 赞 2018-03-13 10:19
菜鸡

菜鸡

好吧~代码流程上的坑基本被我踩完,见id为12779的article
0 赞 2017-09-03 01:16
菜鸡

菜鸡 回复 2451057421@qq.com

兄弟,你这不厚道啊,解决了发下解决办法啊,让大家伙少走点弯路啊
0 赞 2017-09-02 23:07
菜鸡

菜鸡

大佬啊,你这挖了个小小白很难填的坑啊。
你写句这个。
var Calendars=plus.android.importClass("android.provider.CalendarContract.Calendars");
可是没有哪里用到Calendars这个变量的啊。
重点是我这的测试手机报错像下面这样的空指针错误
Uncaught java.lang.NullPointerException;at importClass android.provider.CalendarContract.Calendars at index.html:1
注释掉后,就不报空指针的错了。
但是我这测试手机又在这一句
value.put("calendar_color", -9206951);
报了个什么字符串的错
把-9206951这个用引号括起来就好了。
至此,暂时把大佬挖的坑填上了。
1 赞 2017-09-02 23:05
wenju

wenju

请问有ios版本的麽 ~
0 赞 2017-08-24 22:34
zh666

zh666 回复 藏马

大神,ios的怎么写呢
0 赞 2017-07-18 14:49
497279434@qq.com

497279434@qq.com

同问,IOS版的该怎么写
0 赞 2017-03-10 15:56
gmmx133

gmmx133

同问,IOS版的该怎么写
0 赞 2016-12-21 04:54
2451057421@qq.com

2451057421@qq.com

自己已经解决了
0 赞 2016-12-06 10:07
小柒

小柒 回复 2451057421@qq.com

额,,,你得手机是什么型号的
0 赞 2016-12-02 13:43
2451057421@qq.com

2451057421@qq.com

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

0 赞 2016-11-29 12:37
leah_huang

leah_huang

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

Thyme释念帅 回复 DCloud_heavensoft

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

唱唱

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

hyhezhen

我错了,应该改这句:
events.put("hasAlarm", 1);
1改为字符串就好
events.put("hasAlarm", "1");
0 赞 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, 怎么转换呢?
0 赞 2016-06-11 08:41
小柒

小柒 回复 hyhezhen

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

hyhezhen

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

小柒 回复 hyhezhen

我也需求IOS版本的
0 赞 2015-08-03 09:14
小柒

小柒 回复 DCloud_heavensoft

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

hyhezhen

楼主写得不错
To 藏马:IOS版研究怎样,可以贴代码出来吗?谢谢
0 赞 2015-08-03 08:47
DCloud_heavensoft

DCloud_heavensoft

在我的小米note上有点问题,插入后打开os日历,新日程闪了一下就不见了。
0 赞 2015-07-16 06:49
小柒

小柒 回复 藏马

嗯 谢谢。。。。 由于没学过iOS 希望朋友做好你了分享一下。,。。 谢谢。。。。。
0 赞 2015-06-13 15:39
藏马

藏马

太屌了!我改天研究一下ios的再跟楼主交流
0 赞 2015-06-09 11:40

要回复文章请先登录注册