0

Code shows

Caused by: java.lang.SecurityException: Permission Denial: opening provider com.android.providers.calendar.CalendarProvider2 from ProcessRecord{ad38a2a 30100:com.example.myapplication/u0a231} (pid=30100, uid=10231) requires android.permission.READ_CALENDAR or android.permission.WRITE_CALENDAR

This is timeline calendar view who shows calendar in linear view with zooming

manifest.xml

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

MainActivity.java

    calstuff.LoadCalendars();
    Log.d(LogTag, "calendars loaded: " + calstuff.ourCalendars.size());

    calstuff.LoadEvents();
    Log.d(LogTag, "events loaded: " + calstuff.ourEvents.size());

CalStuff.java

     Cursor calCursor = context.getContentResolver().query(uri, 
     projection, Calendars.VISIBLE + " = 1",
            null, Calendars._ID + " ASC");

i expect to display linear calendar time line , calendar can zoom by year -months-weeks-days but it shows me error.

Gonzo345
  • 1,133
  • 3
  • 20
  • 42
  • 3
    Possible duplicate of [Android permission doesn't work even if I have declared it](https://stackoverflow.com/questions/32635704/android-permission-doesnt-work-even-if-i-have-declared-it) – Zoe May 08 '19 at 05:34
  • Possible duplicate of [android permissions READ\_CALENDAR & WRITE\_CALENDAR](https://stackoverflow.com/questions/38110754/android-permissions-read-calendar-write-calendar) – Android May 08 '19 at 06:05

1 Answers1

0

you need run time permission like below:

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}, 
MY_PERMISSIONS_REQUEST_ACCESS_FINE_LOCATION);
    } else if (ActivityCompat.checkSelfPermission(this, 
Manifest.permission.READ_CALENDAR) == PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, 
Manifest.permission.WRITE_CALENDAR) == PackageManager.PERMISSION_GRANTED) {

        ContentResolver contentResolver = getContentResolver();
        ContentValues contentValues = new ContentValues();
        Uri uri = contentResolver.insert(CalendarContract.Events.CONTENT_URI, contentValues);
    }

i coppied from below link:

Android Calendar Check Permission

for more info read below link:

https://developer.android.com/training/permissions/requesting

hamed
  • 148
  • 11