Android调用日志查询给出illegalargumentexception:列'_id'不存在

时间:2011-07-14 15:13:04

标签: java android calllog

我正在尝试获取用户调用的列表,并且我得到了非法的错误:列'_id'不存在。

我发现这很奇怪,因为我没有创建或与调用Log表有任何关系,我只是想查询它。这是我的代码:

String[] strFields = {
            android.provider.CallLog.Calls.NUMBER, 
            android.provider.CallLog.Calls.TYPE,
            android.provider.CallLog.Calls.DATE,
            android.provider.CallLog.Calls.DURATION
            };

String strOrder = android.provider.CallLog.Calls.DATE + " DESC"; 

callCursor = getContentResolver().query(
            android.provider.CallLog.Calls.CONTENT_URI,
            strFields,
            null,
            null,
            strOrder
            );



    // THE DESIRED COLUMNS TO BE BOUND
  String[] columns = new String[] { android.provider.CallLog.Calls.DATE, 
                                    android.provider.CallLog.Calls.DURATION,
                                    android.provider.CallLog.Calls.TYPE,
                                    android.provider.CallLog.Calls.NUMBER };

...然后我做一些ListView /游标适配器的东西。

在这个查询中,我有什么问题吗?是否有任何其他解决方案来访问通话记录?

感谢。

1 个答案:

答案 0 :(得分:3)

如果你正在使用CursorAdapter,那么callCursor必须包含一个名为“_id”的列,否则适配器将无效(CursorAdapter

您应该将此String添加到strFields数组

android.provider.CallLog.Calls._ID

然后你的CursorAdapter应该按预期工作