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

分享一个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

要回复文章请先登录注册

崔尐磊

崔尐磊

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

菜鸡

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

菜鸡

回复 2***@qq.com :
兄弟,你这不厚道啊,解决了发下解决办法啊,让大家伙少走点弯路啊
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这个用引号括起来就好了。
至此,暂时把大佬挖的坑填上了。
2017-09-02 23:05
wenju

wenju

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

zh666

回复 藏马 :
大神,ios的怎么写呢
2017-07-18 14:49
4***@qq.com

4***@qq.com

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

gmmx133

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

2***@qq.com

自己已经解决了
2016-12-06 10:07
信不过你开车

信不过你开车 (作者)

回复 2***@qq.com :
额,,,你得手机是什么型号的
2016-12-02 13:43