Я хочу читать журналы вызовов в андроиде

Возможный дубликат:
Как могу ли я получить недавно использованные контакты в Android?

Я хочу прочитать недавно использованные контакты.

Кто-нибудь знает, как это сделать?


person kannappan    schedule 06.05.2011    source источник


Ответы (1)


<сильный>1. Создать наблюдателя:

class CustomContentObserver extends ContentObserver {

        public CustomContentObserver(Handler handler) {
            super(handler);

        }

        @Override public boolean deliverSelfNotifications() { 
            return false; 
        }

        public void logCallLog() {
            long dialed;
            String columns[]=new String[] {
                    CallLog.Calls._ID, 
                    CallLog.Calls.NUMBER, 
                    CallLog.Calls.DATE, 
                    CallLog.Calls.DURATION, 
                    CallLog.Calls.TYPE};
            Cursor c;
            c = getContentResolver().query(Uri.parse("content://call_log/calls"),
                    columns, null, null, "Calls._ID DESC"); //last record first
            while (c.moveToNext()) {
                dialed=c.getLong(c.getColumnIndex(CallLog.Calls.DATE));                 
                Log.i("CallLog","type: " + c.getString(4) + "Call to number: "+number+", registered at: "+new Date(dialed).toString());
            }
        }

        public void onChange(boolean selfChange) {
            super.onChange(selfChange);
            Log.d("PhoneService", "StringsContentObserver.onChange( " + selfChange + ")");
            logCallLog();
        }

}

<сильный>2. Зарегистрируйте наблюдателя:

 Uri mediaUri = android.provider.CallLog.Calls.CONTENT_URI;
        Log.d("PhoneService", "The Encoded path of the media Uri is "
                + mediaUri.getEncodedPath());
        CustomContentObserver custObser = new CustomContentObserver(handler);
        imageContentRsr.registerContentObserver(mediaUri, false, custObser);

EDIT: Что касается Jellybean (4.1), теперь вам нужно разрешение:

    <uses-permission android:name="android.permission.READ_CALL_LOG" />

Чтобы это работало и не вызывало исключение отказа в доступе

person alezhka    schedule 06.05.2011
comment
какой тип объекта является imagecontentRsr? - person Pedro Teran; 27.10.2012
comment
попробуйте получитьContentResolver() - person alezhka; 29.10.2012
comment
спасибо, я пробовал с getContentResolver() и работает, но вне класса ContentObserver. в этом классе говорится, что getContentReseolver не определен. - person Pedro Teran; 29.10.2012
comment
Что такое imageContentRsr и где зарегистрировать Observer? Я пытаюсь в Activity. Пожалуйста, предложите - person Ashish Tiwari; 01.12.2014