日历提供者权限错误 [重复]

Posted

技术标签:

【中文标题】日历提供者权限错误 [重复]【英文标题】:Calendar provider permission error [duplicate] 【发布时间】:2016-03-10 11:35:30 【问题描述】:

我知道,我知道,在我的 android 清单中我已经声明了权限!但也许是在错误的地方?

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
//Lots of activities here
</application>

但是,它仍然给我一个错误,说权限被拒绝,您需要获取 android.permission.READ_CALENDAR 或 WRITE_CALENDAR。我正在尝试将事件插入默认日历。以下是我的代码:

Calendar begin = Calendar.getInstance();
            begin.set(dp.getYear(), dp.getMonth(), dp.getDayOfMonth(), tp.getHour(), tp.getMinute());
            long beginMillis = begin.getTimeInMillis();
            long endMillis = beginMillis + 1800000;
            String eventUriString = "content://com.android.calendar/events";
            ContentResolver cr = getContentResolver();
            ContentValues values = new ContentValues();
            values.put(Events.DTSTART, beginMillis);
            values.put(Events.DTEND, endMillis);
            values.put(Events.TITLE, "Flashcards Review: " + deckName);
            values.put(Events.CALENDAR_ID, 1);
            values.put(Events.EVENT_TIMEZONE, TimeZone.getDefault().getID());
            Uri eventUri = cr.insert(Uri.parse(eventUriString), values);

我真的找不到一个好的教程,所以我不知道这段代码是否有意义......对不起!请帮忙!

【问题讨论】:

您的targetSdkVersion 是什么,您正在测试哪个版本的Android? 6.0 和 API 级别 23? 【参考方案1】:

对于日历

Calendar cal = Calendar.getInstance(); 
Intent intent = new Intent(Intent.ACTION_EDIT);
intent.setType("vnd.android.cursor.item/event");
intent.putExtra(CalendarContract.EXTRA_EVENT_BEGIN_TIME,cal.getTimeInMillis()); 
intent.putExtra(CalendarContract.EXTRA_EVENT_END_TIME,cal.getTimeInMillis()+60*60*1000);
intent.putExtra(CalendarContract.EXTRA_EVENT_ALL_DAY, true);
intent.putExtra(Events.TITLE, "Event title here");
intent.putExtra(Events.DESCRIPTION, "This is a sample description");
intent.putExtra(Events.EVENT_LOCATION, "Event Address");
intent.putExtra(Events.RRULE, "FREQ=YEARLY");
startActivity(intent);

并在 Manifest.xml 中放置使用权限,如下所示

<!-- Required to add events to Calendar -->
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

希望这段代码对你有帮助:)

【讨论】:

以上是关于日历提供者权限错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

java日历/格式提供错误的日期

即使似乎授予访问权限,Google Calendar API在OAuth期间也会出现403错误

如何将我的文本添加到 iOS 日历访问权限警报?

防止谷歌日历在远程 icalendar 文件更改时创建重复条目

日历返回错误的月份[重复]

谷歌日历 API:“你需要有这个日历的作者权限。”