пиши в андроид календарь - PullRequest
1 голос
/ 06 марта 2012

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

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

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);
        }
    }
}

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

спасибо

Ответы [ 2 ]

0 голосов
/ 06 марта 2012

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 голосов
/ 06 марта 2012

// включили ли вы разрешение в ваш файл manifest.xml

android.permission.READ_CALENDAR
android.permission.WRITE_CALENDAR

String  WRITE_CALENDAR  Allows an application to write (but not read) the user's calendar data.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...