我正在尝试获取用户调用的列表,并且我得到了非法的错误:列'_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 /游标适配器的东西。
在这个查询中,我有什么问题吗?是否有任何其他解决方案来访问通话记录?
感谢。
答案 0 :(得分:3)
如果你正在使用CursorAdapter,那么callCursor必须包含一个名为“_id”的列,否则适配器将无效(CursorAdapter)
您应该将此String添加到strFields数组
android.provider.CallLog.Calls._ID
然后你的CursorAdapter应该按预期工作