gpt4 book ai didi

android - 添加日历事件时在 2.0 及更高版本的操作系统中出现错误

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

我正在使用下面的代码。它在 android 1.6 上工作正常,但在 android 2.0 及更高版本上抛出以下错误。请让我知道解决方案。

错误:

01-24 16:55:28.315: ERROR/ActivityThread(208): 无法找到日历的提供商信息01-24 16:55:28.315: 错误/错误 (208): 未知 URL 内容://calendar/events

读取事件:

private void readContent(String uriString) {

Uri uri = Uri.parse(uriString);
Cursor cursor = getContentResolver().query(uri, null, null,
null, null);
if (cursor != null && cursor.getCount() > 0) {
cursor.moveToFirst();
String columnNames[] = cursor.getColumnNames();
String value = "";
String colNamesString = "";
do {
value = "";

for (String colName : columnNames) {
value += colName + " = ";
value += cursor.getString(cursor.getColumnIndex(colName))
+ " ||";
}

Log.e("INFO : ", value);
} while (cursor.moveToNext());

}

}

添加事件

private void addEvent(){
try {
ContentValues event = new ContentValues();
event.put("calendar_id", "1");
event.put("title", "tet event");
event.put("description", "hello this is testing of event");
event.put("eventLocation", "Ahmedabad");
Calendar c = Calendar.getInstance();
long date = c.getTimeInMillis();
event.put("dtstart", date);
event.put("dtend", date);
event.put("allDay", 1);
event.put("eventStatus", 1);
event.put("hasAlarm", 1);
Uri eventsUri = Uri.parse("content://calendar/events");
Uri url = getContentResolver().insert(eventsUri, event);
Log.e("uri", url.toString());
} catch (Exception e) {
Log.e("error", e.getMessage());
e.printStackTrace();
}
}

谢谢

最佳答案

您应该知道,在新的 Android 版本中,日历内容提供程序的 URI 已更改,现在您应该使用 content://com.android.calendar/

是的,这是一个废话:(

所以如果您使用的是 content://calendar/,为了获得成功,现在您应该使用 content://com.android.calendar/

如果您希望在您的应用程序的所有 Android 版本之间保持兼容性,您将需要处理旧 URI 和新 URI,您可以这样做:

Uri calendarUri;
Uri eventUri;
if (android.os.Build.VERSION.SDK_INT <= 7 )
{
//the old way
calendarUri = Uri.parse("content://calendar/calendars");
eventUri = Uri.parse("content://calendar/events");
}
else
{
//the new way
calendarUri = Uri.parse("content://com.android.calendar/calendars");
eventUri = Uri.parse("content://com.android.calendar/events");
}

但是,让我们来玩一下 xDDD

function Uri getCalendarURI(eventUri boolean){
Uri calendarURI = null;

if (android.os.Build.VERSION.SDK_INT <= 7 )
{
calendarURI = (eventUri)?Uri.parse("content://calendar/events"):Uri.parse("content://calendar/calendars");
}
else
{
calendarURI = (eventUri)?Uri.parse("content://com.android.calendar/events"): Uri.parse("content://com.android.calendar/calendars");
}
return calendarURI;
}

或者在一行中:

function Uri getCalendarUri(eventUri boolean){
return (android.os.Build.VERSION.SDK_INT <= 7 )?((eventUri)?Uri.parse("content://calendar/events"):Uri.parse("content://calendar/calendars")):(calendarURI = (eventUri)?Uri.parse("content://com.android.calendar/events"): Uri.parse("content://com.android.calendar/calendars"));
}

注意:android.os.Build.VERSION.SDK_INT 可用,因为 SDK_INT = 4 我的意思是 Android 1.6,对于以前版本的 android.os.Build.VERSION.SDK 更多信息在 http://developer.android.com/reference/android/os/Build.VERSION

关于android - 添加日历事件时在 2.0 及更高版本的操作系统中出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4781337/

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