Android 添加新日历

2024-05-06

我已经检查了所有从 Android 应用程序中创建新日历的方法。我见过的唯一方法是在最新的 api 版本中使用新的 Calendar API,但这似乎只有在您使用时才有效CalendarContract.ACCOUNT_TYPE_LOCAL。它不会让您创建附加到用户 Google 帐户的日历,并与Google Calendar。它不会出现在在线日历列表中谷歌日历 http://www.google.com/calendar.

values.put(CalendarContract.Calendars.ACCOUNT_TYPE, 
    CalendarContract.ACCOUNT_TYPE_LOCAL);

我已尝试使用帐户中的帐户类型,但这不起作用。但它似乎不会产生任何错误。结果很好。

values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);

这是使用添加新本地日历的完整代码Calendar API and SYNCADAPTER(帐户类型已注释掉)。有谁知道我想做的事情是否可能?

AccountManager manager = AccountManager.get(context);
Account[] accounts = manager.getAccountsByType("com.google");

String accountName = "";
String accountType = "";

for (Account account : accounts) {
    accountName = account.name;
    accountType = account.type;
    break;
}

ContentResolver cr = context.getContentResolver();
ContentValues values = new ContentValues();

values.put(CalendarContract.Calendars.ACCOUNT_NAME, accountName);
//values.put(CalendarContract.Calendars.ACCOUNT_TYPE, accountType);
values.put(CalendarContract.Calendars.ACCOUNT_TYPE, CalendarContract.ACCOUNT_TYPE_LOCAL);
values.put(CalendarContract.Calendars.NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.CALENDAR_DISPLAY_NAME, DaysSince.CAL_NAME);
values.put(CalendarContract.Calendars.SYNC_EVENTS, 1);
values.put(CalendarContract.Calendars.VISIBLE, 1);
values.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
values.put(CalendarContract.Calendars.OWNER_ACCOUNT, accountName);
values.put(CalendarContract.Calendars.DIRTY, 1);
values.put(CalendarContract.Calendars.CALENDAR_TIME_ZONE, TimeZone.getDefault().getID());

Uri calUri = CalendarContract.Calendars.CONTENT_URI;

calUri = calUri.buildUpon()
        .appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
        .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, accountName)
        .appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, accountType)
        .build();

Uri result = cr.insert(calUri, values);

是的,你可以做到。但由于您想创建一个与您的 Google 帐户链接的日历,因此您需要 Google Calendar API(没有找到使用 Android Calendar Provider 执行此操作的单一解决方案)。检查以下链接:

  • 适用于 Android 的 Google 日历 API https://developers.google.com/google-apps/calendar/quickstart/android

  • 插入新的 Google 日历 https://developers.google.com/google-apps/calendar/v3/reference/calendars/insert

请务必检查他们的 API 浏览器。简单的HTTP请求用于创建新日历:

POST https://www.googleapis.com/calendar/v3/calendars?key={YOUR_API_KEY}

{
 "summary": "My new google calendar"
}

这是RESPONSE:

{
 "kind": "calendar#calendar",
 "etag": "__________etag_val_________",
 "id": "[email protected] /cdn-cgi/l/email-protection",
 "summary": "My new google calendar"
}

之后,您应该能够使用日历提供程序从 Android 应用程序管理此日历(同步后)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 添加新日历 的相关文章

随机推荐

  • Flex 垂直数据网格

    我可以有一个垂直而不是水平显示数据的数据网格吗 例如 如果这是我的数据提供者 array firstname John lastname Doe array firstname Jack lastname Jill 我希望数据显示如下 Fi
  • 带子图聚合的递归查询(任意深度)

    我问了一个问题earlier https stackoverflow com questions 28036055 recursive query with sub graph aggreagation关于沿着图表聚合数量 提供的两个答案效
  • 使用 MathJax 排版/渲染动态内容

    我使用 MathJax 来显示数学方程 它在静态编写的数学中运行良好 但不适用于动态添加的数学 这是我的代码 Static div span x b pm sqrt b 2 4ac over 2a span div Dynamic div
  • Angular2 - *ngIf 和异步可观察量

    我在将 ngIf 与可观察变量一起使用时遇到问题 问题是 当我隐藏元素时 ngIf 然后再次显示 值将不会加载 因此 div someObservable async div 基本上当 showDiv 设置为true首先 加载了 someO
  • [现代] C++ 中 N 个变量的范围/循环

    遍历 N 个任意类型的变量来执行操作的简洁方法是什么 假设我有变量a b c d e并想要对他们所有人进行一些操作 使用 Boost Hana 和通用 lambda include
  • Ember:如何使用 i18n lib 翻译占位符?

    See http jsfiddle net cyclomarc 36VS3 1 http jsfiddle net cyclomarc 36VS3 1 我正在使用 Ember i18n lib 进行翻译 如何在 Ember TextFiel
  • 来自 jquery 事件的回调角度函数

    我正在使用 Angular5 并尝试获取 fullcalendar io jquery 插件的 dayClick 事件来回调角度组件 以便我可以打开从日历详细信息填充的角度组件对话框 要设置示例 请在控制台中执行以下操作 ng new pj
  • 跳转到脚本中的某些位置

    有没有办法让脚本跳转到命令提示符中的特定位置 例如 GOTO 我想让脚本结束时跳到开头 tag1 Read Host Enter tag cls sc exe tag1 start RemoteRegistry cls Start Slee
  • Clojure 宏:从地图创建本地变量 [重复]

    这个问题在这里已经有答案了 我有这个示例代码 我通过迭代映射的键值对来创建变量 defmacro block bindings body let mapcat fn k v if symbol k k symbol name k v bin
  • 我们可以将 WORD 加载项发布到 Windows 10 应用商店吗?

    The WORD Add in是使用开发的VSTO在 Visual Studio 2015 中 它有一个自定义功能区 其中包含一些按钮 可以对 WORD 文档执行某些内容操作 这可以转换为UWP app https msdn microso
  • 在中止部署期间,某些实例可能已部署新的应用程序版本

    我正在尝试将 ASP NET 应用程序部署到 AWS 当我按下部署按钮时出现错误 在中止部署期间 某些实例可能已部署新的应用程序版本 为确保所有实例运行相同版本 请重新部署适当的应用程序版本 我不知道我在哪里犯了错误以及出了什么问题 任何意
  • 如何在 ColdFusion 中获取字符串的内容减去扩展名?

    例如 我只想要字段中文件的 文件名 假设我有 myimage jpg 我只想显示 myimage 我怎样才能得到它 使用列表功能对您有利
  • 限制用户角色仅更改 Woocommerce 中的某些订单状态 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想限制按角色访问 woocommerce 下拉列表中的某些订单状态 我已经在functions php子主题中尝试过代码按角色限制
  • $lookup mongodb 中的 $project

    我有一个查询 使用 lookup https docs mongodb com manual reference operator aggregation lookup 加入 两个模型 之后我使用 project https docs mo
  • 带 cookie 身份验证的 Gorilla websocket

    这是我的设置 我正在构建一个带有用户登录的服务 使用 Negroni 和 Gorilla 登录后 用户会获得一个会话 cookie 服务器使用该会话 cookie 来授权受保护的端点 受保护的端点之一允许用户 客户端与服务器打开 Webso
  • 从 Datastax 6.0 到 Cassandra 3 的迁移路径

    我正在尝试找到从 Datastax Enterprise DSE 6 0 14 到 Cassandra Community OSS 3 的迁移路径 到目前为止 我无法找到有效的迁移路径 所有键空间复制均已更新为NetworkTopology
  • 比较 TCP 校验和与 Scapy?

    我试图在使用 Scapy 作为嗅探器时识别校验和不正确的数据包 我可以通过访问获得原始校验和 packet TCP chksum 然后我使用删除它 del packet TCP chksum 我想做类似的事情 if originalChec
  • OpenSSL的EVP是什么意思?

    OpenSSL的EVP是什么意思 我知道它是 OpenSSL 中的一个更高级别的加密接口库 但是字母 E V P 代表什么 谢谢 陈兹 有趣的问题 我不确定 但是 ifndefevp h 顶部是 ifndef HEADER ENVELOPE
  • PHP/HTML 添加删除按钮

    我有下面的代码来从数据库中检索行 其中用户名列与基本目录名称匹配 username basename dirname FILE username mysql real escape string username result mysql
  • Android 添加新日历

    我已经检查了所有从 Android 应用程序中创建新日历的方法 我见过的唯一方法是在最新的 api 版本中使用新的 Calendar API 但这似乎只有在您使用时才有效CalendarContract ACCOUNT TYPE LOCAL