Запрос поставщика содержимого календаря Android продолжает падать - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть приложение PhoneGap, и я хочу получить доступ к Календарю Android через провайдера контента.Моя функция PhoneGap JavaScript может успешно вызывать и возвращать функции Java, однако я просто не смог заставить работать вызовы контент-провайдера.Приложение без проблем компилируется и запускается, но как только я вызываю соответствующую функцию Content Provider, оно на некоторое время зависает и вылетает.Ниже приведена измененная версия функции контент-провайдера, которую я нашел: package com.george.myapp;

import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.TimeZone;

import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class EventsInCalender extends Activity {
    //@Override
    public void onCreate() {
    //public void onCreate(Bundle savedInstanceState) {
        //super.onCreate(savedInstanceState);
        //setContentView(R.layout.event);       
    }

    public String getCal()
    {
        String cal_name = "createdstring";
        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++) {
                  // retrieve the calendar names and ids                 
                  calIds[i] = cursor.getInt(0);
                  calNames[i] = cursor.getString(1);
                  cursor.moveToNext();
              }
              cal_name = calNames[0];
              cursor.close();
        }
        return cal_name;
    }
}

Ответы [ 3 ]

0 голосов
/ 03 февраля 2012

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

0 голосов
/ 15 января 2013

Вы должны добавить разрешение READ_CALENDAR в файл AndroidManifest.xml.

0 голосов
/ 02 февраля 2012

Я бы следовал этой официальной документации для работы с провайдером содержимого календаря в Android: http://developer.android.com/guide/topics/providers/calendar-provider.html

  1. Запрос календарей
  2. Выберите календарь
  3. Запрос событий
...