Get Last Call Duration in android

后端 未结 9 1568
北荒
北荒 2020-12-03 15:20

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 s

相关标签:
9条回答
  • 2020-12-03 16:04

    This code works fine for me.......

    void retriveCallSummary() {
    
                Log.i("*****retriveCallSummary******","Call retrive method worked");
                StringBuffer sb = new StringBuffer();
                Uri contacts = CallLog.Calls.CONTENT_URI;
                Cursor managedCursor = mContext.getContentResolver().query(
                        contacts, null, null, null, null);
                int number = managedCursor.getColumnIndex( CallLog.Calls.NUMBER ); 
                int duration1 = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
                if( managedCursor.moveToFirst() == true ) {
                    String phNumber = managedCursor.getString( number );
                    String callDuration = managedCursor.getString( duration1 );
                    String dir = null;
                    sb.append( "\nPhone Number:--- "+phNumber +" \nCall duration in sec :--- "+callDuration );
                    sb.append("\n----------------------------------");
                        Log.i("*****Call Summary******","Call Duration is:-------"+sb);
                }
                managedCursor.close();
            }
    
    0 讨论(0)
  • 2020-12-03 16:07

    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()) {
    
                HashMap 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);
    
    0 讨论(0)
  • 2020-12-03 16:13

    This is my code and works perfectly fine for last outgoing call.

    private String getCallDetails() {
    
        StringBuffer sb = new StringBuffer();
        Cursor managedCursor = managedQuery(CallLog.Calls.CONTENT_URI, 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);
    
        managedCursor.moveToLast();
            String phNumber = managedCursor.getString(number);
            String callType = managedCursor.getString(type);
            String callDate = managedCursor.getString(date);
            Date callDayTime = new Date(Long.valueOf(callDate));
            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;
            }
    
        if(dir.equals("OUTGOING")){
           //whatever you want here
            return "yes";
        }
    
        managedCursor.close();
        return "no";
    
    }
    
    0 讨论(0)
提交回复
热议问题