четверг, 24 февраля 2011 г.

Missed call count..

Разбирался со следующим: мой красивенький виджет я сделал для WidgetLocker-а - кастомного локскрина, который показывает любые виджеты на себе

Естественно ткнув в телефон, хочется на локскрине увидеть кроме текущего времени и что-то более полезное – кол-во пропущенных звонков, непрочитанных почт/смс

Научился получать количество пропущенных звонков пока:

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        Cursor c = getContentResolver().query(
            CallLog.Calls.CONTENT_URI,
            null,
            CallLog.Calls.TYPE +  " = ? AND " + CallLog.Calls.NEW + " = ?",
            new String[] { Integer.toString(CallLog.Calls.MISSED_TYPE), "1" },
            CallLog.Calls.DATE + " DESC"
        );
        startManagingCursor(c);

        int numberColumn = c.getColumnIndex(CallLog.Calls.NUMBER);
        int dateColumn = c.getColumnIndex(CallLog.Calls.DATE);
        int typeColumn = c.getColumnIndex(CallLog.Calls.TYPE);

        if (c.moveToFirst()) {
            do {
                String number = c.getString(numberColumn);
                Log.d(TAG, "number: " + number + ", type: " + c.getInt(typeColumn));
            } while (c.moveToNext());
        }
    }

Позвонил сам себе со скайпа и не взял трубку, и в логе вижу при запуске программы:

02-24 22:31:03.197: DEBUG/Telephony test(15516): number: -1, type: 3

Номер –1 – потому что со скайпа, 3 – MISSED CALLS, причем показаны именно новые, а не “вообще”; но вообще мне конечно не очень нужны номера, мне надо c.getCount() – получить количество записей в выборке

Теперь надо почитать про ContentObserver; я так понял пока, что это типа broadcast receiver-а, но не совсем; и по изменению состояния обсервера (?) обновлять виджет, дорисовывая “балунчик” с количеством непринятых звонков. Вот только с рисованием у меня не очень, буду где-то что-то комуниздить :)

Комментариев нет:

Отправить комментарий