如何确定在Android中最后一个电话是呼出还是呼入

齐达内

我在我的应用程序中使用了android通话记录,我想确定最后一个通话是呼入还是呼出。这是我到目前为止尝试过的方法,但是int类型给我一个错误android.database.CursorIndexOutOfBoundsException:请求的索引-1,大小为284

Cursor managedCursor = context.getContentResolver().query( CallLog.Calls.CONTENT_URI,null, null,null, android.provider.CallLog.Calls.DATE + " DESC");
            int number = managedCursor.getColumnIndex( CallLog.Calls.NUMBER );
            int duration1 = managedCursor.getColumnIndex( CallLog.Calls.DURATION);
            int type = Integer.parseInt(managedCursor.getString(managedCursor.getColumnIndex(CallLog.Calls.TYPE)));
            Log.v("DialBroadcast Receiver", "Number is: " + type);
            if( managedCursor.moveToFirst() == true ) {
                String phNumber = managedCursor.getString( number );
                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);
                Log.v("DialBroadcast Receiver", "Number is: " + callDuration);
            }
普拉卡什乌卜迪耶

你得到

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

che之前if( managedCursor.moveToFirst()){},这就是为什么要表现出色。

将此行放入if或尝试此方法

private static String getCallDetails(Context context) {
    StringBuffer stringBuffer = new StringBuffer();
    Cursor cursor = context.getContentResolver().query(CallLog.Calls.CONTENT_URI,
            null, null, null, CallLog.Calls.DATE + " DESC");
    int number = cursor.getColumnIndex(CallLog.Calls.NUMBER);
    int type = cursor.getColumnIndex(CallLog.Calls.TYPE);
    int date = cursor.getColumnIndex(CallLog.Calls.DATE);
    int duration = cursor.getColumnIndex(CallLog.Calls.DURATION);       
    while (cursor.moveToNext()) {
        String phNumber = cursor.getString(number);
        String callType = cursor.getString(type);
        String callDate = cursor.getString(date);
        Date callDayTime = new Date(Long.valueOf(callDate));
        String callDuration = cursor.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;
        }
        stringBuffer.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- "
                + dir + " \nCall Date:--- " + callDayTime
                + " \nCall duration in sec :--- " + callDuration);
        stringBuffer.append("\n----------------------------------");
    }
    cursor.close();
    return stringBuffer.toString();
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何覆盖 Python 中最后一个打印的字符

确定列值(SQL)中最后一个大写字母的索引?

如何确定矩阵中矩阵的每一列中最后一个例如100个非零数字的均值

如何确定一个数字是正数还是负数?

如何从电话号码中选择第一个或最后一个值?

如何确定递归的最后一个堆栈空间

如何确定Xcode中的最后一个激活UITextField

如何确定在同一个数组中是否存在重复值?

如何查看一行中最后一个填充的值?

Pandas \ Python:如何计算一列中最后一个相同值的数量

是否可以安装自己的拨号程序来处理呼入和呼出电话?

如何禁用Windows 8.1中最后一个活动用户的自动登录?

如何获取URL中最后一个斜杠之后的所有内容?

如何获取URL中最后一个斜杠之后的所有内容?

如何删除每行中最后一个分号之后的所有内容?

如何获取熊猫中最后一个非零值的列名?

如何删除HTML表单中最后一个元素以外的所有元素

如何设置Web组件中最后一个插入的元素的样式

如何找到行中最后一个非空单元格的列位置?

D3如何找到折线图中最后一个点的高度

如何仅处理多个并行承诺中最后创建的一个?

如何在Java中最后一个逗号后获取字符串?

如何建立联接,其中最后一个表限制为1或0?

如何删除SwiftUI中最后一个List项目中的分隔线?

如何获取列表中最后一个子目录的名称

如何获取NSString中最后一个字母之前的字符?

如何获得列表中最后一个负值之后的正值?

如何查找单元格数组中最后一个非空元素的索引

如何获取矩阵列中最后一个非零值的数组?