0

我必须开发应用程序才能获得通话时间。在通话结束时,应用程序读取当前通话的持续时间并将数据上传到服务器。有时通话日志会返回之前的通话时长,因为刷新日志需要几秒钟。我正在使用下面提到的代码来阅读通话记录。有没有办法以编程方式刷新通话记录?

private int UpdateTelNoLog(String strTelNo) 
{       
    int duration=0;
    String strOrder = CallLog.Calls.DATE + " DESC";
        String selection = android.provider.CallLog.Calls.NUMBER + "='" + strTelNo + "'";
        Cursor managedCursor =myContext.getContentResolver().
                    query(CallLog.Calls.CONTENT_URI, null, selection, null, strOrder);

        if(managedCursor.getCount()>0)
        {
            managedCursor.moveToFirst();                        
            int date = managedCursor.getColumnIndex( CallLog.Calls.DATE);
            duration = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
        }
    return duration ;
}
4

1 回答 1

0

当我试图在通话结束后获取当前通话的持续时间时,我遇到了同样的问题。但它有时调用日志会返回以前的通话持续时间,因为刷新日志需要几秒钟。所以我尝试而不是刷新我调用了两毫秒的时间延迟,现在它可以工作了。希望它应该适合你。谢谢

private int UpdateTelNoLog(String strTelNo) 
{       
    int duration=0;
    String strOrder = CallLog.Calls.DATE + " DESC";
    String selection = android.provider.CallLog.Calls.NUMBER + "='" + strTelNo + "'";
    Cursor managedCursor =myContext.getContentResolver().
                query(CallLog.Calls.CONTENT_URI, null, selection, null, strOrder);

    if(managedCursor.getCount()>0)
    {
        managedCursor.moveToFirst();                        
        int date = managedCursor.getColumnIndex( CallLog.Calls.DATE);
        duration = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
    }
    return duration ;
}


handler.postDelayed(new Runnable() { 
      public void run() {  
         UpdateTelNoLog("959........");
      } 
}, 2000);
于 2014-03-06T08:32:06.247 回答