5

私は、特にユーザーがリマインダーを作成して自分のカレンダーに保存できるアプリに取り組んでいます。

現在のコードは、最初にローカル カレンダーを作成し、その後、要求に応じて静かに (カレンダー アプリを開かずに) イベントを挿入します。

問題は、カレンダーの作成中に、一部のデバイスで次のフィールドを追加すると (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 カレンダー アプリは常にクラッシュし、アプリを削除しても開くことができません (破損したカレンダーが既に作成されているため)。

さらに、必要なフィールドがないため、この破損したカレンダーを削除できないようです..

修正するにはどうすればよいですか?

今のところ、この破損したカレンダーをプログラムでユーザーの電話から削除できるようにするだけで、カレンダー アプリをもう一度使用できるようになります。

ありがとう!

4

1 に答える 1

0

このアプリを使用して、障害のあるカレンダーを削除してみてください

iCal インポート/エクスポート CalDAV

アプリを開き、次の操作を行います。

  1. カレンダーの編集を選択します

  2. Type:Local の下にある障害のあるカレンダーを選択します。

  3. カレンダーの削除オプションを選択すれば完了です

これが問題の解決に役立つことを願っています。

于 2019-06-21T07:29:20.687 に答える