2017-10-03 2 views
1

Bitte führen Sie mich, wie Bedingung auf Anruftyp anwenden nur verpasste Rufnummer in Liste hinzufügen. Und zweitens heiß, diese Liste nach Datum zu sortieren und ausgewählte Artikel aus der Liste zu löschen.So zeigen Sie nur verpasste Anrufe aus der Anrufliste android

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); 
    } 

} 
+0

Überprüfen Sie die CallLog.Calls.TYPE –

+0

https://stackoverflow.com/questions/7835876/how-are-call-types-incoming-outgoing-missed-stored-in-android-call-log –

Antwort

1

Ersetzen Sie Ihre bedingte Anweisung mit folgendem Code

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; 
    } 

Das Problem mit Ihrem Code werden Sie Bedingung testen mit Variable 'Typ' Das ist Ihre Spaltenname eher Spaltenwert. Sie sollten callType überprüfen, da Sie auch den Anruftyp erhalten. Konvertiere callType String in in und kampiere dann während des Vergleichs mit CallLog.Calls.MISSED_TYPE: Hoffe das hilft dir.

+0

Danke @abdul waheed es funktioniert –

+0

@UsmanArshad, wenn das Ihnen geholfen hat bitte vergessen Sie nicht zu akzeptieren und markieren Sie diese Antwort als nützlich :) –

+0

Bitte führen Sie mich, wie Sie Listenelemente durch langen Klick Listener entfernen. –

0
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; 
    } 
Verwandte Themen