Android 使用权限创建日历事件

问题描述

我正在尝试将一个事件插入到用户日历中(使用日历提供程序,我必须在运行时向用户询问写入权限。我不想在不需要请求的情况下使用 Intent权限)当我执行 addEvent 方法时,一切都按预期进行,但是当我查看日历时,没有添加任何内容。我错过了什么或做错了什么?如果您需要了解任何其他信息来帮助我,请告诉我。提前致谢。

添加事件方法

public void addEvent(View view)
    {
        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N)
        {
            long calID = 3;
            long startMillis = 0;
            long endMillis = 0;
            Calendar beginTime = Calendar.getInstance();

            Calendar calendar = Calendar.getInstance();
            Log.e("Calendar: ",calendar.get(Calendar.YEAR)+","+calendar.get(Calendar.MONTH)+","+calendar.get(Calendar.DATE));
            beginTime.set(calendar.get(Calendar.YEAR),calendar.get(Calendar.MONTH),calendar.get(Calendar.DATE),7,30);
            startMillis = beginTime.getTimeInMillis();
            Log.e("Calendar: ",beginTime.toString());
            Calendar endTime = Calendar.getInstance();
            endTime.set(calendar.get(Calendar.YEAR),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,"Dog Event");
            values.put(CalendarContract.Events.DESCRIPTION,"Group workout");
            values.put(CalendarContract.Events.CALENDAR_ID,calID);
            values.put(CalendarContract.Events.EVENT_TIMEZONE,"America/Los_Angeles");
            Uri uri = cr.insert(CalendarContract.Events.CONTENT_URI,values);

            Toast.makeText(this,"Event added: " + uri,Toast.LENGTH_LONG).show();
        }
    }

权限(在创建时执行)

private void checkPermission(int callbackId,String... permissionsId) {
        boolean permissions = true;
        for (String p : permissionsId) {
            permissions = permissions && ContextCompat.checkSelfPermission(this,p) == PERMISSION_GRANTED;
        }

        if (!permissions)
            ActivityCompat.requestPermissions(this,permissionsId,callbackId);
    }

在清单中声明权限

<uses-sdk android:minSdkVersion="14" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)