package com.example.calendarproviderdemo;
import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi;
import androidx.appcompat.app.AppCompatActivity;
import android.Manifest;
import android.content.ContentResolver;
import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import java.security.Permission;
@RequiresApi(api = Build.VERSION_CODES.M)
public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private final int PERMISSION_REQUEST_CODE = 1;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        checkCalendarPermission();
        getCalenderProvider();
    }
    private void getCalenderProvider() {
        ContentResolver contentResolver = getContentResolver();
        Uri uri = Uri.parse("content://com.android.calendar/calendars");
        Cursor cursor = contentResolver.query(uri, null, null, null, null);
        String[] columnNames = cursor.getColumnNames();
        for(String name:columnNames)
        {
            Log.d(TAG, "getCalenderProvider: "+name);
        }
        while (cursor.moveToNext()){
            Log.d(TAG, "-----------------------------");
            for (String name:columnNames)
            {
                Log.d(TAG, cursor.getString(cursor.getColumnIndex(name)));
            }
        }
    }
    private void checkCalendarPermission() {
        int readPermission = checkSelfPermission(Manifest.permission.READ_CALENDAR);
        int writePermission = checkSelfPermission(Manifest.permission.WRITE_CALENDAR);
        if (readPermission == PackageManager.PERMISSION_GRANTED && writePermission == PackageManager.PERMISSION_GRANTED) {
            Log.d(TAG, "有权限,无需申请");
        } else {
            requestPermissions(new String[]{Manifest.permission.READ_CALENDAR, Manifest.permission.WRITE_CALENDAR}, PERMISSION_REQUEST_CODE);
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if(requestCode==PERMISSION_REQUEST_CODE)
        {
            if(grantResults.length==2 && grantResults[0]==PackageManager.PERMISSION_GRANTED && grantResults[1]==PackageManager.PERMISSION_GRANTED)
            {
                Log.d(TAG, "权限申请成功");
            }else{
                Log.d(TAG, "权限申请失败");
                finish();
            }
        }
    }
}

只能获取日历的属性信息,却获取不到属性的值,不输出任何内容,也不报错。
当打印具体某个属性值当时候,报错
Log.d(TAG, cursor.getString(cursor.getColumnIndex("sync_events")));

因为你用的是模拟器,所以只能获取属性信息,而没有属性的值,你换成真机就好了