【问题标题】:How to show only missed calls from call log android如何仅显示来自通话记录android的未接来电
【发布时间】:2017-10-03 10:34:45
【问题描述】:

请指导我如何对仅未接来电号码添加到列表中的呼叫类型应用条件。其次是按日期对列表进行排序以及如何从列表中删除选定的项目。

public void getlog()

    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 name = managedCursor.getColumnIndex(CallLog.Calls.CACHED_NAME)

    int numberOfRows = managedCursor.getCount();
    if (numberOfRows > 0) {
        if (managedCursor.moveToFirst()) {
            do {
                    String phNumber = managedCursor.getString(number);
                    String callType = managedCursor.getString(type);
                    String callDate = managedCursor.getString(date);
                    Date callDayTime = new Date(Long.valueOf(callDate));
                    String namec = managedCursor.getString(name);

                    if (namec == null) {
                        namec = "Unknown";
                    }

                    HashMap<String, String> hm = new HashMap<String, String>();
                    hm.put("listview_title", namec);
                    hm.put("listview_number", phNumber);
                    hm.put("listview_date", String.valueOf(callDayTime));
                    hm.put("listview_image", image);
                if(type == CallLog.Calls.MISSED_TYPE){ aList.add(hm);

            }
            while (managedCursor.moveToNext());
        }
        String[] from = {"listview_image", "listview_title", "listview_number", "listview_date"};
        int[] to = {R.id.listview_image, R.id.listview_item_title, R.id.listview_item_number, R.id.listview_item_time};
        SimpleAdapter simpleAdapter = new SimpleAdapter(getBaseContext(), aList, R.layout.custmlv, from, to);
        androidListView.setAdapter(simpleAdapter);
        androidListView.setOnItemLongClickListener(this);
        managedCursor.close();
         Collections.reverse(aList);
    }

}

【问题讨论】:

标签: android listview android-studio


【解决方案1】:

用下面的代码替换你的条件语句

    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";
            sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- " + dir + " \nCall Date:--- " + callDayTime + " \nCall duration in sec :--- " + callDuration);
            sb.append("\n----------------------------------");
            miss_cal.setText(sb);
            break;

        case CallLog.Calls.MISSED_TYPE:
            dir = "MISSED";
            break;
    }

您的代码的问题是您正在使用变量“type”测试条件这是您的列名而不是列值。您应该检查 callType,因为您还获得了呼叫类型。在与 CallLog.Calls.MISSED_TYPE 进行比较时,将 callType String 转换为 in,然后再转换为 campare: 希望对你有所帮助。

【讨论】:

  • @UsmanArshad 如果对您有帮助,请不要忘记接受并将此答案标记为有用:)
  • 请指导我如何通过长按监听器删除列表项。
【解决方案2】:
    int dircode = Integer.parseInt(callType);
    switch (dircode) 
    {
    case CallLog.Calls.OUTGOING_TYPE:
    break;
    case CallLog.Calls.INCOMING_TYPE:
    break;
    case CallLog.Calls.MISSED_TYPE:
          HashMap<String, String> hm = new HashMap<String, String>();
           hm.put("listview_title", namec);
           hm.put("listview_number", phNumber);
           hm.put("listview_date", String.valueOf(callDayTime));
           hm.put("listview_image", image);
           aList.add(hm);

            break;
     }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-03
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多