获取Android的最后通话时间 [英] Get Last Call Duration in android

查看:744
本文介绍了获取Android的最后通话时间的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找得到拨打最后拨打的号码的持续时间的最简单的方法。因此,对于例如如果我打了一个电话给我妈有一次我切断电话与持续时间的通知应该拿出。

我尝试以下,但问题是,它与持续时间的完整列表。传入,传出,错过了。

我如何区分开来:

我试过如下:

 私人无效getCallDetails(){

    StringBuffer的SB =新的StringBuffer();
    光标CUR = getContentResolver()查询(CallLog.Calls.CONTENT_URI,NULL,NULL,NULL,android.provider.CallLog.Calls.DATE +降序)。

    INT数= cur.getColumnIndex(CallLog.Calls.NUMBER);
    INT持续时间= cur.getColumnIndex(CallLog.Calls.DURATION);
    sb.append(呼叫详细信息:\ N);
    而(cur.moveToNext()){
        串phNumber = cur.getString(数);
        字符串callDuration = cur.getString(持续时间);
        字符串DIR = NULL;

        sb.append(\ nPhone编号:---+ phNumber +\ nCall出发时间以秒:---+ callDuration);
        sb.append(\ñ----------------------------------);
    }
    cur.close();
    call.setText(某人);
}
 

解决方案

尝试下面code:

 私人无效getCallDetails(){
        StringBuffer的SB =新的StringBuffer();
        乌里接触= CallLog.Calls.CONTENT_URI;
        光标managedCursor = context.getContentResolver()查询(联系人,NULL,NULL,NULL,NULL);
        INT数= managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
        整型= managedCursor.getColumnIndex(CallLog.Calls.TYPE);
        INT日期= managedCursor.getColumnIndex(CallLog.Calls.DATE);
        INT持续时间= managedCursor.getColumnIndex(CallLog.Calls.DURATION);
        sb.append(呼叫详细:);
        而(managedCursor.moveToNext()){

            rowDataCall =新的HashMap<字符串,字符串>();

            串phNumber = managedCursor.getString(数);
            串CALLTYPE = managedCursor.getString(类型);
            字符串callDate = managedCursor.getString(日期);
            字符串callDayTime =新的日期(Long.valueOf(callDate))的toString()。
            //长的时间戳记= convertDateToTimestamp(callDayTime);
            字符串callDuration = managedCursor.getString(持续时间);
            字符串DIR = NULL;
            INT DIR code =的Integer.parseInt(CALLTYPE);
            开关(DIR code){
            案例CallLog.Calls.OUTGOING_TYPE:
                DIR =离开;
                打破;

            案例CallLog.Calls.INCOMING_TYPE:
                DIR =进入;
                打破;

            案例CallLog.Calls.MISSED_TYPE:
                DIR =遗漏;
                打破;
            }
            sb.append(\ nPhone编号:---+ phNumber +\ nCall出发类型:---+方向+\ nCall出发日期:---+ callDayTime +\ nCall出发时间以秒:--- + callDuration);
            sb.append(\ñ----------------------------------);


        }
        managedCursor.close();
        的System.out.println(某人);
 

您将获得打电话下面行中键入:

  int型的= managedCursor.getColumnIndex(CallLog.Calls.TYPE);
 

I am looking for an easiest way to get call duration of last dialed number. So for e.g if I have made a call to my mom once I cut the call a notification with the duration should come up.

I am trying out the following but the problem is that it comes with a full list of duration. incoming, outgoing, missed.

How do I differentiate it:

I tried the following:

 private void getCallDetails() {

    StringBuffer sb = new StringBuffer();
    Cursor cur = getContentResolver().query( CallLog.Calls.CONTENT_URI,null, null,null, android.provider.CallLog.Calls.DATE + " DESC");

    int number = cur.getColumnIndex( CallLog.Calls.NUMBER ); 
    int duration = cur.getColumnIndex( CallLog.Calls.DURATION);
    sb.append( "Call Details : \n");
    while ( cur.moveToNext() ) {
        String phNumber = cur.getString( number );
        String callDuration = cur.getString( duration );
        String dir = null;

        sb.append( "\nPhone Number:--- "+phNumber +" \nCall duration in sec :--- "+callDuration );
        sb.append("\n----------------------------------");
    }
    cur.close();
    call.setText(sb);
}

解决方案

Try below code:

private void getCallDetails() {
        StringBuffer sb = new StringBuffer();
        Uri contacts = CallLog.Calls.CONTENT_URI;
        Cursor managedCursor = context.getContentResolver().query(contacts, null, null, null, null);
        int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
        int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
        int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
        int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
        sb.append("Call Details :");
        while (managedCursor.moveToNext()) {

            rowDataCall = new HashMap<String, String>();

            String phNumber = managedCursor.getString(number);
            String callType = managedCursor.getString(type);
            String callDate = managedCursor.getString(date);
            String callDayTime = new Date(Long.valueOf(callDate)).toString();
            // long timestamp = convertDateToTimestamp(callDayTime);
            String callDuration = managedCursor.getString(duration);
            String dir = null;
            int dircode = Integer.parseInt(callType);
            switch (dircode) {
            case CallLog.Calls.OUTGOING_TYPE:
                dir = "OUTGOING";
                break;

            case CallLog.Calls.INCOMING_TYPE:
                dir = "INCOMING";
                break;

            case CallLog.Calls.MISSED_TYPE:
                dir = "MISSED";
                break;
            }
            sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration);
            sb.append("\n----------------------------------");


        }
        managedCursor.close();
        System.out.println(sb);

You will get Call Type in below line:

int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);

这篇关于获取Android的最后通话时间的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆