我怎样才能知道我的日历意图的结果?

2023-12-27

从我的应用程序中,我启动日历的目的是:

    Calendar cal = Calendar.getInstance();              
    Intent intent = new Intent(Intent.ACTION_EDIT);
    intent.setType("vnd.android.cursor.item/event");
    intent.putExtra("beginTime", cal.getTimeInMillis());
    intent.putExtra("allDay", true);
    intent.putExtra("rrule", "FREQ=YEARLY");
    intent.putExtra("endTime", cal.getTimeInMillis()+60*60*1000);
    intent.putExtra("title", "Some title");
    startActivity(intent);

如果用户继续保存此预先填充的日历条目,我无法弄清楚如何取回 eventID。我还想知道用户是否取消了日历提示,并且没有保存这个新的预填充事件。

是否有任何相关的内容返回到 onActivityResult(...) ,我可以将其用作日历事件的引用?我需要这个,以便稍后可以找到/打开日历事件进行查看/编辑。 [更新:] 是的,尝试了 onActivityResult(...),一旦日历打开,在任何用户交互之前意图就会返回,所以这是没有用的。

我想通过使用意图(也让用户从设备上可用的各种日历中进行选择)移交给日历应用程序来完成此操作,并避免从我的应用程序重新创建日历 UE。另外我想至少支持Android 2.2+。


这就是我所做的:

我在开始意图之前获取下一个事件 ID:

public static long getNewEventId(ContentResolver cr) {      
    Cursor cursor = cr.query(Events.CONTENT_URI, new String [] {"MAX(_id) as max_id"}, null, null, "_id");
    cursor.moveToFirst();
    long max_val = cursor.getLong(cursor.getColumnIndex("max_id"));     
    return max_val+1;
}

然后,我像往常一样调用意图:

        long event_id = EventUtility.getNewEventId(mContext.getContentResolver());

        Intent intent = new Intent(Intent.ACTION_INSERT)
        .setData(Events.CONTENT_URI)
        .putExtra(Events._ID, event_id)
        .putExtra(Events.TITLE, "title");

        startActivity(intent);

这就是技巧,在我的 Activity 的 onResume() 中,我检查是否创建了与之前生成的 event_id 相同的新 event_id。如果相同,则表示新日历已创建。然后,我将新内容存储在我的数据库中。

public static long getLastEventId(ContentResolver cr) {      
    Cursor cursor = cr.query(Events.CONTENT_URI, new String [] {"MAX(_id) as max_id"}, null, null, "_id");
    cursor.moveToFirst();
    long max_val = cursor.getLong(cursor.getColumnIndex("max_id"));     
    return max_val;
}

@Override
public void onResume() {
    super.onResume();

    long prev_id = EventUtility.getLastEventId(getContentResolver());

    // if prev_id == mEventId, means there is new events created
    // and we need to insert new events into local sqlite database.
    if (prev_id == mEventID) {
        // do database insert
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我怎样才能知道我的日历意图的结果? 的相关文章

随机推荐

  • 使用 JavaScript 查找 HTML 元素的 X/Y [重复]

    这个问题在这里已经有答案了 如果没有显式设置 如何从 JavaScript 中找到 HTML 元素 DIV 的 XY 坐标 我是这样做的 Based on http www quirksmode org js findpos html va
  • python-requests 可以像curl一样直接获取url到磁盘上的文件句柄吗?

    curl 有一个选项可以直接将文件和头数据保存在磁盘上 curl setopt curl obj CURLOPT WRITEHEADER header handle curl setopt curl obj CURLOPT FILE fil
  • 如何自定义SimpleHTTPServer发送的页面?

    我在用SimpleHTTPServer我的代码中的类来响应客户端请求 实际上是mininet http mininet org用于网络项目的 python 脚本 客户端每5秒向服务器发送一次请求10 0 0 1 server cmd pyt
  • 教义自定义类型总是改变表

    我添加了一个自定义类型 例如 namespace My SuperBundle Types use Doctrine DBAL Types Type use Doctrine DBAL Platforms AbstractPlatform
  • Android apk 扩展文件 - 可选

    我可以使用主扩展文件作为应用程序中的可选下载选项吗 所以我不需要用 APK 文件下载它 但稍后用户会这样做 当您创建扩展文件时 它应该类似于 main patch
  • 删除已保存图像周围的空白

    我需要拍摄图像并经过一些处理后保存它 当我显示它时 该图看起来很好 但保存该图后 我在保存的图像周围有一些空白 我已经尝试过 tight 选项savefig方法 也没有效果 代码 import matplotlib image as mpi
  • 操作系统和 javascript/HTML5 可以访问本地存储吗?

    我想在浏览器关闭时使用操作系统读取浏览器的 本地存储 我想将客户端数据保存在本地存储中 然后关闭浏览器和互联网 然后让操作系统程序 Windows exe 访问和分析该数据 然后将新数据写入该本地存储区域 以便当浏览器重新启动新数据时数据在
  • 使用 ChartJS 在 Django 中生成多个折线图

    我正在 Django 中工作 在我的模块的功能中绘制一些图表 即 如果我有 2 个模块 我想要 2 个图表 如果有 8 个模块 我想要 8 个图表 模块集成在插件中 这样我就可以列出插件中找到的所有模块 我在 Django 中做了这个 de
  • Express + AngularJS + HTML:ng-include 不起作用(404 - 页面未找到错误)

    我是新来的AngularJS 我正在尝试使用ng include在我的主 HTML 页面中包含外部 HTML 页面 但问题是我无法包含它并得到 404 以下是文件夹结构和代码 项目文件夹结构 按钮 Click jade 这是起始页 doct
  • 在 Vim 中启用 Markdown 突出显示

    我在装有 OS X Lion 的 MacBook Air 终端上使用 Vim 但我似乎找不到一个好的 Markdown 语法突出显示插件 到目前为止我已经尝试过塑料男孩 https github com plasticboy vim mar
  • 将哈希表数据集合导出到 CSV

    我正在尝试将集合哈希表项的名称 值对导出到 CSV 我还没有找到代码的选择对象部分的正确语法 我希望 CSV 文件具有 Url 和 Owner 的列 谢谢您的帮助 System Collections ArrayList collectio
  • Hive from_unixtime 毫秒

    我们在 Hive 中存储了一个时间戳纪元列 BIGINT 我们想要获取该纪元的日期 yyyy MM dd 问题是我的纪元以毫秒为单位 例如1409535303522 因此 选择时间戳 from unixtime timestamp yyyy
  • 用户输入和输出在我的汇编代码中不起作用

    以下程序编译时没有错误 但运行时不会提示任何输入 也不会打印任何内容 有什么问题 我该如何解决它 我使用这些命令来组装和链接 usr local bin nasm f macho32 1 ld macosx version min 10 9
  • Swift 4 Decodable - 以枚举为键的字典

    我的数据结构有一个枚举作为键 我希望下面的内容能够自动解码 这是一个错误还是某些配置问题 import Foundation enum AnEnum String Codable case enumValue struct AStruct
  • selenium / capybara - 无法加载 Firefox 配置文件

    当我使用 selenium 运行测试时 浏览器会反复弹出 指出找不到 firefox 配置文件 我准备了一个与 selenium 一起使用的 Firefox 配置文件 我只是不确定如何告诉 selenium 该配置文件所在的位置 我如何告诉
  • 加载 Magento 页面时出现奇怪的错误

    当我加载前端时 我的浏览器返回那些奇怪的错误 Uncaught ReferenceError Mage is not defined Uncaught ReferenceError Varien is not defined Uncaugh
  • 会话存储安全吗?

    我想使用会话存储来查询数据库中的用户数据一次 然后简单地使用JS来检索它 所以我正在考虑使用会话存储 接下来我的问题是 这样安全吗 请注意 1 JS 无法插入到带有表单的页面 表单只接受字母数字值 因此它只能来自 URL 1 1php 中不
  • Python - 通过代理使用socket.gethostbyname

    我正在使用 TOR 来代理连接 但在代理 DNS 查找时遇到困难socket gethostbyname www yahoo com 我通过使用wireshark 嗅探流量了解到它没有通过代理发送DNS 流量 这是我正在使用的代码的副本 i
  • 如何更改VS的编译器?

    我正在使用 VS 2010 我更改了编译器 C 代码而不是 C 的设置 它工作正常 但问题是 MS 编译器不支持 C99 标准 因此我正在寻找可以与 VS 10 一起使用的 C 编译器 如何做到这一点 提前致谢 MS Visual Stud
  • 我怎样才能知道我的日历意图的结果?

    从我的应用程序中 我启动日历的目的是 Calendar cal Calendar getInstance Intent intent new Intent Intent ACTION EDIT intent setType vnd andr