不使用Intent将事件插入日历错误。 Android Studio

时间:2015-08-09 23:49:34

标签: java android android-studio

我正在使用一个按钮,并在onClick事件中调用以下方法:

public void addCalendarEvent() {

    long calID = 1;
    long startMillis = 0;
    long endMillis = 0;
    Calendar beginTime = Calendar.getInstance();
    beginTime.set(2015, 8, 9, 7, 30);
    startMillis = beginTime.getTimeInMillis();
    Calendar endTime = Calendar.getInstance();
    endTime.set(2015, 8, 9, 8, 45);
    endMillis = endTime.getTimeInMillis();

    ContentResolver cr = getContentResolver();
    ContentValues values = new ContentValues();
    values.put(CalendarContract.Events.DTSTART, startMillis);
    values.put(CalendarContract.Events.DTEND, endMillis);
    values.put(CalendarContract.Events.TITLE, "Jazzercise");
    values.put(CalendarContract.Events.DESCRIPTION, "Group workout");
    values.put(CalendarContract.Events.CALENDAR_ID, calID);
    values.put(CalendarContract.Events.EVENT_TIMEZONE, "America/New_York");
    Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI, values);
}

尝试调试后,我得到以下异常:

java.lang.SecurityException:Permission Denial:从ProcessRecord打开提供程序com.android.providers.calendar.CalendarProvider2 {438ea3d0 30931:com.example.events/u0a255}(pid = 30931,uid = 10255)需要android.permission.READ_CALENDAR或android.permission.WRITE_CALENDAR

虽然我已经为AndroidManifest.xml添加了用户权限:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.events" >

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />
    <activity
        android:name=".MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

</application>

感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

试试这个

  <manifest>
    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
    <uses-permission android:name="android.permission.READ_CALENDAR" />

  <application>

  </application>

  </manifest>