Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android调用日志以编程方式刷新_Android - Fatal编程技术网

Android调用日志以编程方式刷新

Android调用日志以编程方式刷新,android,Android,我必须开发应用程序来获取通话持续时间。在调用结束时,应用程序读取当前调用的持续时间并将数据上载到服务器。某个时间调用日志会返回上一个调用的持续时间,因为刷新日志需要几秒钟的时间。我使用下面提到的代码来读取通话记录。有没有办法以编程方式刷新调用日志 private int UpdateTelNoLog(String strTelNo) { int duration=0; String strOrder = CallLog.Calls.DATE + " DESC";

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

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 ;
}

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

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);

但有时会失败。我认为这取决于设备的速度。