0

我正在尝试获取用户呼叫的列表,但我得到了非法参数异常:列“_id”不存在。

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

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/cursor 适配器的东西。

那么在这个查询中我做错了什么吗?是否有任何替代解决方案来访问通话记录?

谢谢。

4

1 回答 1

3

如果您使用 CursorAdapter,则 callCursor 必须包含名为“_id”的列,否则适配器将无法工作(CursorAdapter

您应该将此字符串添加到您的 strFields 数组

android.provider.CallLog.Calls._ID

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

于 2011-07-14T15:30:35.190 回答