问题描述
我正在尝试将一个事件插入到用户日历中(使用日历提供程序,我必须在运行时向用户询问写入权限。我不想在不需要请求的情况下使用 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 (将#修改为@)