デバイスの工場出荷時のリセット後。カレンダーの表示名を(以下のコードで)取得しようとすると、カレンダーがないことが返されます。ただし、デバイスのカレンダーアプリケーションを少なくとも1回開くと、デフォルトの電話カレンダーが正しく取得されます。
デバイスのカレンダーアプリケーションを開かずにカレンダー(特にデフォルト)を取得する方法はありますか?
前もって感謝します。
デバイスに存在するカレンダーを取得するためのコードは次のとおりです。
private Uri getCalendarUri() {
return Uri.parse(Integer.parseInt(Build.VERSION.SDK) > 7 ? "content://com.android.calendar/calendars" : "content://calendar/calendars");
}
private String[] getCalendars(Context context) {
String[] res = null;
ContentResolver contentResolver = context.getContentResolver();
Cursor cursor = null;
try {
cursor = contentResolver.query( getCalendarUri(),
Integer.parseInt(Build.VERSION.SDK) > 13 ? new String[]{"_id", "calendar_displayName"} : new String[]{"_id", "displayName"}, null, null, "_id ASC");
if (cursor.getCount() > 0) {
res = new String[cursor.getCount()];
int i = 0;
while (cursor.moveToNext()) {
res[i] = cursor.getString(0) + ": " + cursor.getString(1);
i++;
}
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
if (cursor != null)
cursor.close();
}
return res;
}