首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于getContentResolver()查询CallLog

关于getContentResolver()查询CallLog
EN

Stack Overflow用户
提问于 2012-06-14 18:19:39
回答 2查看 3.7K关注 0票数 3
代码语言:javascript
复制
    Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);
    for (int i = 0; i < c.getColumnCount(); i++) {
        Log.i(getClass().getName(), "retrieveCall(): " + c.getColumnName(i));
    }

我可以得到4.0.x中的所有列名称,但只能得到4.0.x以下的_id。我的代码是怎么回事? Thx!

代码语言:javascript
复制
    Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);
    for (int i = 0; i < c.getColumnCount(); i++) {
        Log.i(getClass().getName(), "retrieveCall(): " + c.getColumnName(i));
    }

    while (c.moveToNext()) {
        for (int i = 0; i < c.getColumnCount(); i++) {
            Log.i(getClass().getName(), "retrieveCall(): " + c.getColumnName(i) + " = " + c.getInt(i) + "/" + c.getString(i));
        } ...

上面的代码在4.0.x中运行得很好,我猜数据库之间有一些不同?

@Anu,这是我的完整代码,如果你发现了什么问题,请告诉我:

代码语言:javascript
复制
private void retrieveCall()
{
    Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);

    if (c != null) {
        while (c.moveToNext()) {
            String number = c.getString(c.getColumnIndex("number"));
            String name = c.getString(c.getColumnIndex("name"));
            long date = c.getLong(c.getColumnIndex("date"));

            if (number.length() > 0) {
                LogDetail log = null;
                if (_callTable.containsKey(number)) {
                    log = (LogDetail) _callTable.get(number);
                    log.name = name;
                    log.date = date;
                    log.amount++;
                } else {
                    log = new LogDetail();
                    log.name = name;
                    log.date = date;
                    log.amount = 1;
                }
                _callTable.put(number, log);
            }
        }
        c.close();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-06-14 19:19:40

试试这个..。对我来说很管用。

代码语言:javascript
复制
   Cursor c1 = getContentResolver().query(CallLog.Calls.CONTENT_URI,null,null,null,null); 
  for(int i=0;i<c1.getColumnCount();i++){
    Log.i("Column name", ""+c1.getColumnName(i));
         }   
票数 2
EN

Stack Overflow用户

发布于 2012-06-14 18:27:07

别忘了移动Cursor的位置

使用:

代码语言:javascript
复制
Cursor c = getContentResolver().query(CallLog.Calls.CONTENT_URI, null, null, null, null);
while (c.moveToNext()) {
    Log.i(getClass().getName(), "retrieveCall(): " + c.getColumnName(i));
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11031067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档