2012-06-16 2 views
2

Я пытаюсь зачитать все существующие календари. Я попробовал пример отсюда:Запросить календарь ICS

http://developer.android.com/guide/topics/providers/calendar-provider.html

, но я получаю следующее сообщение об ошибке компиляции: Метод getContentResolver() не определено для типа ххх Может кто-нибудь помочь мне, пожалуйста?

public HashMap<String, String> readCalendar() {  
String[] EVENT_PROJECTION = new String[] { 
     Calendars._ID, 
     Calendars.OWNER_ACCOUNT,      
     Calendars.ACCOUNT_NAME,     
     Calendars.CALENDAR_DISPLAY_NAME         
    }; 
    String selectionICS = "((" + Calendars.ACCOUNT_NAME + " = ?) AND (" 
      + Calendars.ACCOUNT_TYPE + " = ?) AND (" 
      + Calendars.OWNER_ACCOUNT + " = ?))"; 
    String[] selectionArgs = new String[] {"VISIBLE=1"}; // or "selected=1" ?? 

    Cursor managedCursor = null; 
     ContentResolver cr = getContentResolver(); 
     managedCursor = cr.query(calendarUri, EVENT_PROJECTION, selectionICS, selectionArgs, null);selectionICS, selectionArgs, null); 


} 

ответ

1

getContentResolver() является метод Context, поэтому я думаю, что ваш класс не является производным от Activity (который является производным от Context).

Вы должны использовать переменную контекста, если вы хотите вызвать ее за пределами класса активности (context.getContentResolver()). Если ваш класс является BroadcastReceiver, то контекстная переменная указывается в качестве аргумента в onReceive(). Если нет, вы должны отправить его в свой метод, когда вы его вызываете.

+0

Большое спасибо, теперь он скомпилирован, но managedCursor имеет значение null после считывания. Вы видите ошибку? – user1390816

+0

Если вы хотите получить все календари, вам не нужно фильтровать результаты, поэтому не используйте более двух параметров: 'cr.query (calendarUri, EVENT_PROJECTION, null, null, null);' – Dalmas

+0

Спасибо очень, я попробую. – user1390816

Смежные вопросы