通过日历提供程序添加的事件未显示在 Android 日历应用程序上

2023-12-10

我正在尝试将事件添加到默认的 Android 日历,而不要求用户确认保存事件。 (所以不是故意的)

以下代码没有编译错误或运行时错误。单击该按钮后,不会显示任何错误,也不会向 Android 日历应用程序添加任何事件。

我已经在清单中检查了日历授权,并在 graddle 中检查了 de min sdk 版本(我在 android studio 上工作)

public void onAddEventClicked(View view) {
    if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) != PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
    }
    else if(ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED) {
        ContentResolver cr = getContentResolver();
        Calendar beginTime = Calendar.getInstance();
        beginTime.set(2018, Calendar.OCTOBER, 27, 13, 30);
        Calendar endTime = Calendar.getInstance();
        endTime.set(2018, Calendar.OCTOBER, 27, 17, 30);
        ContentValues values = new ContentValues();
        values.put(CalendarContract.Events.DTSTART, beginTime.getTimeInMillis());
        values.put(CalendarContract.Events.DTEND, endTime.getTimeInMillis());
        values.put(CalendarContract.Events.TITLE, "doctor");
        values.put(CalendarContract.Events.DESCRIPTION, "doctor appointment");
        values.put(CalendarContract.Events.CALENDAR_ID, 0);
        values.put(CalendarContract.Events.EVENT_TIMEZONE, "Europe/Paris");
        values.put(CalendarContract.Events.EVENT_LOCATION, "Paris");
        Uri EVENTS_URI = Uri.parse(CalendarContract.Events.CONTENT_URI.toString());
        Uri uri = cr.insert(EVENTS_URI, values);
        Button b = (Button) findViewById(R.id.addEventButton);
        b.setText("Did it worked ?");
    }
}

默认日历 ID 是 3,但您有 0,这可能就是您看不到它被添加到日历中的原因。

来自日历提供程序开发人员文档,它将日历 ID 硬编码为 3。

long calID = 3;
long startMillis = 0;
long endMillis = 0;
Calendar beginTime = Calendar.getInstance();
beginTime.set(2012, 9, 14, 7, 30);
startMillis = beginTime.getTimeInMillis();
Calendar endTime = Calendar.getInstance();
endTime.set(2012, 9, 14, 8, 45);
endMillis = endTime.getTimeInMillis();
...

ContentResolver cr = getContentResolver();
ContentValues values = new ContentValues();
values.put(Events.DTSTART, startMillis);
values.put(Events.DTEND, endMillis);
values.put(Events.TITLE, "Jazzercise");
values.put(Events.DESCRIPTION, "Group workout");
values.put(Events.CALENDAR_ID, calID);
values.put(Events.EVENT_TIMEZONE, "America/Los_Angeles");
Uri uri = cr.insert(Events.CONTENT_URI, values);

// get the event ID that is the last element in the Uri
long eventID = Long.parseLong(uri.getLastPathSegment());

要确保 3 是主日历 ID,您可以参考此post用于查询主/默认日历

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

通过日历提供程序添加的事件未显示在 Android 日历应用程序上 的相关文章

随机推荐

  • Android支持线程吗?

    Android 支持 pthread 吗 为什么当我使用 pthread 选项时我看到链接器错误 i686 android linux bin ld 找不到 lpthread include
  • 如何检查 JellyBean 中的 Talkback 是否处于活动状态

    这个问题询问如何知道 Android Talkback 是否处于活动状态 这一直有效 直到果冻豆 从 Android 4 1 开始 该步骤不再起作用 因为提到的光标为空 话虽如此 我想问是否有办法在 Jelly Bean 中进行相同的检查
  • Excel 2013 强大查询 - 带有动态参数的 SQL 查询

    然而 我从网上查看 找不到一个简单的 示例来展示如何使用动态参数值并拥有一个在 WHERE 中使用动态参数值的 SQL 查询 我正在寻找的是 最终用户将能够更改电子表格 参数表 中的列中的值 并使用此新值作为参数刷新数据 也许一个例子最能描
  • 媒体查询:不起作用

    我正在使用 webpack 和较少的预处理器 我还包括media less文件位于底部main less 问题出在里面所有的样式 media标签被忽略 CSS代码 media all and min device width 414px a
  • 使用 MySQL 数据读取器

    我不熟悉使用数据读取器 我需要以下代码的帮助 我想从数据库中检索单个数据 MySqlDataAdapter data new MySqlDataAdapter cmd conn Open DataTable dt new DataTable
  • 从 XAML 调用位于类中的事件或方法

    您好 我正在尝试是否可以将像 TextChanged 文本框的 这样的事件放置在独立于窗口代码隐藏 如类 的另一个位置 我想做的是在 ResourceDictionary 中引用 TextBox 的事件 因为 ResourcesDictio
  • `nls` 无法估计我的模型的参数

    我正在尝试估计堆定律的常数 我有以下数据集novels colection Number of novels DistinctWords WordOccurrences 1 1 13575 117795 2 1 34224 947652 3
  • 会话之间的WCF数据持久化

    我们正在开发一个基于WCF 的系统 在此过程中 我们试图锁定某些数据 以免被多个用户修改 因此 我们决定建立一个数据结构 其中包含执行锁定逻辑所需的信息 例如存储锁定对象的 ID 我们遇到的问题是在会话之间保留该数据 我们是否可以避免执行昂
  • python“bigfloat”包安装问题

    我试图在我的 Mac OS X 10 8 4 上安装 bigfloat 包 但遇到了一些问题 包 bigfloat 需要另外两个依赖项 1 mpfr 和 2 gmp 我在这里安装了gmp http gmplib org 但安装 mpfr 并
  • 使用VBA将多个公式放入一个单元格中

    我正在开发一个宏 将多个公式放入一个单元格中 在本例中 它的 3 个 Bloomberg 公式被合并到一个单元格中 该公式在 Excel 中手动复制或键入时有效 但在 VBA 模块中键入时无效 它会产生错误 编译错误 预期 语句结束 并突出
  • 如何解决“接收失败:连接被对等方重置”错误

    我想 git pull or git fetch命令开启myRepo给我错误但是myTestRepo工作正常 命令给了我这个错误 Fetching origin fatal unable to access http mysite myPa
  • Mysql插入2个表

    我想插入两个表 visits visit id int card id int 登记 registration id int type enum in out timestamp int visit id int 我想要类似的东西 INSE
  • 为什么在 foreach 中对 Linq 分组选择所做的更改会被忽略,除非我添加 ToList()?

    我有以下方法 public IEnumerable
  • 获取具有最高值且有联系的顶行

    我在 PostgreSQL 中有一个名为product其中包含2个字段 id and quantity 我想找到id最高的产品quantity 据我所知 有两种方法 SELECT id FROM product WHERE quantity
  • Eclipse 没有显示已弃用警告?

    根据 Javadocs public Date int year int month int day This constructor was deprecated in API level 1 Date date new Date yea
  • 标记大小/alpha 缩放与窗口大小/缩放绘图/散点

    当探索 xy 图表上具有许多点的数据集时 我可以调整 Alpha 和 或标记大小 以快速直观地了解点最密集的聚集位置 然而 当我放大或放大窗口时 需要不同的 Alpha 和 或标记大小才能给出相同的视觉印象 当我增大窗口或放大数据时 如何增
  • 将商店经理用户名添加到 Woocommerce 管理订单备注

    我现在有一个问题 我有一个插件 可以让我快速更改管理订单列表中的订单状态 不幸的是 商店经理的名字没有被传送 我想我已经找到了正确的代码 但我不知道具体该怎么做 将不胜感激任何帮助 public function save comment
  • 使用 GPUImage 对视频进行色度过滤?

    我正在尝试使用透明键在我的应用程序中显示具有透明度的视频文件 RGB 0x00FF00 或全绿色 使用 BradLarson 的很棒GPUImage工具包 然而 我在使用过程中遇到了一些困难GPUImageChromaKeyFilter过滤
  • 如何在 Windows 7 64 位上使用 theano 设置 cuDnn

    我已经安装了Theano框架并在我的机器上启用了 CUDA 但是当我在 python 控制台中 导入 theano 时 我收到以下消息 gt gt gt import theano Using gpu device 0 GeForce GT
  • 通过日历提供程序添加的事件未显示在 Android 日历应用程序上

    我正在尝试将事件添加到默认的 Android 日历 而不要求用户确认保存事件 所以不是故意的 以下代码没有编译错误或运行时错误 单击该按钮后 不会显示任何错误 也不会向 Android 日历应用程序添加任何事件 我已经在清单中检查了日历授权