要解决Android中读取谷歌日历事件不起作用的问题,可以尝试以下解决方法:
ContentResolver cr = getContentResolver();
cr.delete(CalendarContract.Calendars.CONTENT_URI.buildUpon()
.appendQueryParameter(CalendarContract.CALLER_IS_SYNCADAPTER, "true")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_NAME, "")
.appendQueryParameter(CalendarContract.Calendars.ACCOUNT_TYPE, "com.google")
.build(), null, null);
其中应替换为您的Google账户名。
AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccountsByType("com.google");
for (Account account : accounts) {
if (account.type.equals("com.google")) {
Bundle bundle = new Bundle();
ContentResolver.requestSync(account, CalendarContract.AUTHORITY, bundle);
}
}
private class ReadCalendarTask extends AsyncTask> {
@Override
protected List doInBackground(Void... params) {
// 在此处读取日历事件
List events = new ArrayList<>();
// 读取日历事件的代码
return events;
}
@Override
protected void onPostExecute(List events) {
// 在此处更新UI
// 更新UI的代码
}
}
// 调用AsyncTask
new ReadCalendarTask().execute();
通过将读取日历事件的代码放在doInBackground方法中,并在onPostExecute方法中更新UI,可以避免在UI线程中阻塞。
请注意,这些解决方法可能因设备和Android版本的不同而有所不同。您可能需要根据您的特定情况修改代码。