CallLog没有给出正确的NUMBER值(拨打的号码)

时间:2012-01-24 15:11:51

标签: android

我正在使用CallLog,并将我的一个变量设置为用户拨打的联系人的CACHED_NAME。这样可以正常工作,但是如果用户拨打了不在其联系人中的号码,我希望将该变量设置为NUMBER值。出于某种原因,当我这样做时,我得到的结果是单个数字整数,例如“1”或“7”。这是我的代码:

Uri allCalls = Uri.parse("content://call_log/calls");
    String sortOrder = CallLog.Calls.DATE;
    Cursor c = managedQuery(allCalls, null, null, null, sortOrder);

    while (c.moveToNext()) {

        int callType = Integer.parseInt(c.getString(c
                .getColumnIndex(CallLog.Calls.TYPE)));
        long date = c.getLong(c.getColumnIndex(Calls.DATE));
        String col1;

        if (callType == CallLog.Calls.OUTGOING_TYPE
                && date > resetDate) {

                col1 = c.getString(c.getColumnIndex(Calls.CACHED_NAME));
                // if there is no cached name, get the number
                if (col1 == null) {
                    col1 = String.valueOf(c.getLong(c
                            .getColumnIndex(Calls.NUMBER)));
                }

我是否正确地说NUMBER的值应该是用户拨打的电话号码?我知道一切都是正确的,除了我将col1设置为数字值的最后一行。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

当您使用getLong时,您正在使用getString作为电话号码:

col1 = c.getString(c.getColumnIndex(Calls.CACHED_NAME));
// if there is no cached name, get the number
if (col1 == null) {
    col1 = String.valueOf(c.getString(c
        .getColumnIndex(Calls.NUMBER)));
}