私は、特にユーザーがリマインダーを作成して自分のカレンダーに保存できるアプリに取り組んでいます。
現在のコードは、最初にローカル カレンダーを作成し、その後、要求に応じて静かに (カレンダー アプリを開かずに) イベントを挿入します。
問題は、カレンダーの作成中に、一部のデバイスで次のフィールドを追加すると (Samsung で) 機能し、他のデバイスではそれらを直接追加できないことです。
contentValues.put(CalendarContract.Calendars.ACCOUNT_NAME, ApplicationState.getCurrentUser().getFullName());
contentValues.put(CalendarContract.Calendars.ACCOUNT_TYPE, "LOCAL");
contentValues.put(CalendarContract.Calendars.CALENDAR_ACCESS_LEVEL, CalendarContract.Calendars.CAL_ACCESS_OWNER);
contentValues.put(CalendarContract.Calendars.OWNER_ACCOUNT, ApplicationState.getCurrentUser().getEmail());
これらの行は一部のデバイスでは実行できなかったため、記述されたコードは最初にそれらを使用してカレンダーを作成しようとしましたが、失敗した場合は作成しませんでした。
上記の結果: Samsung 以外のほとんどのデバイスでは、ACCOUNT_NAME などの必須フィールドがなく、破損したカレンダーが作成されました。
つまり、ネイティブの Google カレンダー アプリは常にクラッシュし、アプリを削除しても開くことができません (破損したカレンダーが既に作成されているため)。
さらに、必要なフィールドがないため、この破損したカレンダーを削除できないようです..
修正するにはどうすればよいですか?
今のところ、この破損したカレンダーをプログラムでユーザーの電話から削除できるようにするだけで、カレンダー アプリをもう一度使用できるようになります。
ありがとう!