gpt4 book ai didi

android - 无法以编程方式为 Android 4.1 添加日历事件

转载 作者:太空狗 更新时间:2023-10-29 15:14:28 24 4
gpt4 key购买 nike

我正在尝试在 Android 应用程序中创建一个按钮,该按钮能够在不启动 Intent 的情况下将事件添加到日历。

我找到了这个官方 android 资源,它解释了如何实现这一点。

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);

我已经在包括 2.3、4.0、4.1 和 4.2 在内的许多设备上测试了这段代码。

这似乎无法在 4.1 设备上工作。我试图使用此代码添加日历事件但无济于事。任何人都可以在 4.1 上确认这个错误吗?或者是否有将日历事件添加到 4.1 的解决方法?

最佳答案

我遇到了同样的问题。

在文档中您可以阅读:

In practice, inserts and updates should be done in an asynchronous thread to move the action into a background thread.

删除代码的最后一行并使用它:

AsyncQueryHandler handler = new MyHandler(getContentResolver());
handler.startInsert(0, null, Events.CONTENT_URI, values);

哪里MyHandler是一个扩展 AsyncQueryHandler 的类(那是抽象的):

public class MyHandler extends AsyncQueryHandler {
public MyHandler(ContentResolver cr) {
super(cr);
}
}

这对我有用。

另外两个可能引起误解的细节:

  • Calendar类别月份值从0开始
  • 要在没有 Intent 的情况下编写日历,您必须将特定权限放入 list 文件中:<uses-permission android:name="android.permission.WRITE_CALENDAR" />

关于android - 无法以编程方式为 Android 4.1 添加日历事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13863701/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com