Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在android中获取最后通话时长大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在寻找一种最简单的方法来获得上次拨打号码的通话时长.因此,例如,如果我在拨打电话时打电话给我的妈妈,则应该会出现持续时间的通知.

我正在尝试以下但问题是它带有一个完整的持续时间列表.传入,传出,错过.

我如何区分它:

我尝试了以下方法

private void getCallDetails() {

    StringBuffer sb = new StringBuffer();
    cursor cur = getContentResolver().query( CallLog.Calls.CONTENT_URI,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);
}

解决方法

试试以下代码
private void getCallDetails() {
        StringBuffer sb = new StringBuffer();
        Uri contacts = CallLog.Calls.CONTENT_URI;
        cursor managedcursor = context.getContentResolver().query(contacts,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);

您将在下面的行中获得呼叫类型:

int type = managedcursor.getcolumnIndex(CallLog.Calls.TYPE);

大佬总结

以上是大佬教程为你收集整理的在android中获取最后通话时长全部内容,希望文章能够帮你解决在android中获取最后通话时长所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。