gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 19:06:41 25 4
gpt4 key购买 nike

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

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

我已经检查了 list 中的日历授权并检查了 gradle 中的 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,这可能就是你看不到它被添加到日历的原因。

来自Calendar Provider developer doc ,它将日历 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用于查询主/默认日历

关于android - 通过日历提供程序添加的事件未显示在 Android 日历应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46965732/

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