2017-10-03 4 views
1

Veuillez me guider sur la façon d'appliquer la condition sur le type d'appel uniquement numéro d'appel manqué ajouter dans la liste. Et d'autre part chaud pour trier cette liste par date sage et comment supprimer les éléments sélectionnés de la liste.Comment afficher uniquement les appels manqués à partir du journal des appels android

getLog public void()

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

Vérifiez la CallLog.Calls.TYPE –

+0

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

Répondre

1

Remplacez votre déclaration conditionnelle avec ci-dessous le 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; 
    } 

Le problème avec votre code vous état à l'essai avec la variable 'type ' Ceci est votre nom de colonne plutôt que valeur de colonne. Vous devriez avoir vérifié callType, car vous obtenez également le type d'appel. Convertissez callType String en et ensuite campez lorsque vous comparez avec CallLog.Calls.MISSED_TYPE: Espérons que cela vous aide.

+0

merci @abdul waheed ça marche –

+0

@UsmanArshad si cela vous a aidé s'il vous plaît ne pas oublier d'accepter et marquer cette réponse comme utile :) –

+0

s'il vous plaît me guider comment supprimer les éléments de la liste par un long clic client. –

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