пиши в андроид календарь

1

В рамках проекта я создал приложение Android, которое общается с онлайн-базой данных (MySQL), чтобы интегрировать встречу, приняло онлайновый календарь. Я собираю данные, конвертированные в Json, но когда в повестке дня мобильного телефона Android стоит проблема, вот мой код: (извините за мой английский)

РЕДАКТИРОВАТЬ:

public class calendrier extends Activity {
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        Cursor cursor = getContentResolver()
                .query(Uri.parse("content://com.android.calendar/calendars"),
                        new String[] { "_id", "displayName" }, "selected=1",
                        null, null);
        if (cursor != null && cursor.moveToFirst()) {
            String[] calNames = new String[cursor.getCount()];
            int[] calIds = new int[cursor.getCount()];
            for (int i = 0; i < calNames.length; i++) {

                calIds[i] = cursor.getInt(0);
                calNames[i] = cursor.getString(1);
                cursor.moveToNext();
            }
            cursor.close();
            if (calIds.length > 0) {
                // we're safe here to do any further work
            }

            // grab calendar id from above
            int cal_id = calIds[0];

            // set the content value
            ContentValues cv = new ContentValues();

            cv.put("calendar_id", cal_id);
            cv.put("title", "titre");
            cv.put("description", "bla bla bla");
            cv.put("eventLocation", "city");
            // note: you're going to need to convert the desired date into
            // milliseconds
            cv.put("dtstart", System.currentTimeMillis());
            cv.put("dtend", System.currentTimeMillis()
                    + DateUtils.DAY_IN_MILLIS);
            cv.put("allDay", 0); // true = 1, false = 0
            cv.put("hasAlarm", 1);

            // once desired fields are set, insert it into the table
            getContentResolver().insert(
                    Uri.parse("content://com.android.calendar/events"), cv);
        }
    }
}

этот код работает, но он спрашивает меня, хочу ли я участвовать в мероприятии, когда я его открываю, и я бы хотел, чтобы он этого не делал

благодаря

  • 0
    Попробуйте прочитать исходный код.
Теги:
calendar

2 ответа

0

Uri of Calendar изменился с Android 2.2.

Old (2.1 and before): content://calendar/
New (2.2): content://com.android.calendar/

Измените свой Uri на новый.

В Android нет приложения для календаря. Таким образом, Ури может вообще не работать. Если вы получаете первое сообщение об ошибке "Не удалось найти информацию о провайдере для com.android.calendar", вам необходимо проверить трубку, которую вы используете для отладки, использует Календарный URI. Чтобы вставить событие "Время в календаре", вы можете использовать следующий пример кода:

    Calendar calendar = Calendar.getInstance();
    calendar.getTimeInMillis();
    cv.put("dtstart", ""+calendar.getTimeInMillis());  
    cv.put("dtend", ""+calendar.getTimeInMillis()+10000);
  • 0
    спасибо, но не знаю содержание URL: //com.android.calendar/ :( :(
  • 0
    спасибо за ваш ответ, Android 2.3 нужно использовать: содержание: //com.android.calendar/calendars, но у меня есть новые ошибки: 03-06 09: 47: 01.477 E / AndroidRuntime (17876): вызвано: java.lang.NullPointerException :
Показать ещё 4 комментария
0

//сделал U включить разрешение в вашем файле manifest.xml

android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR

String  WRITE_CALENDAR  Allows an application to write (but not read) the user calendar data.
  • 0
    Да, я включил этот <использование-разрешения android: name = "android.permission.READ_CALENDAR" /> <использует-разрешение android: name = "android.permission.WRITE_CALENDAR" />

Ещё вопросы

Сообщество Overcoder
Наверх
Меню