2012-07-06 3 views
1

Je veux également accéder aux journaux de sms. mais je ne trouve aucun moyen, j'ai déjà accédé aux journaux d'appels en utilisant CallLog.Calls, il est incapable de lister les journaux sms. ci-dessous le code est la liste des journaux d'appels seulement, mais pas tous les journaux, même les journaux de sms ne sont pas répertoriés (journaux SMS signifie que les journaux créés parce que reçu et envoyé des sms). s'il vous plaît aidez-moi à trouver le moyen de récupérer les journaux SMS. s'il vous plaît ans si possible monsieur.Comment lister tous les journaux d'appels de la liste des journaux, y compris les journaux Sms et e-mail?

Cursor cursor = managedQuery(CallLog.Calls.CONTENT_URI, null, null, 
      null, Calls.DATE + " DESC"); 
    // cursor is inited 
    cursor.moveToFirst(); 

    String name; 
    String number; 
    int type; 
    do { 

     name = ""; 
     number = ""; 
     type = -1; 
     try { 
      number = cursor.getString(cursor 
        .getColumnIndex(CallLog.Calls.NUMBER)); 
      type = cursor.getInt(cursor.getColumnIndex(CallLog.Calls.TYPE)); 
      try { 
       name = cursor.getString(cursor 
         .getColumnIndex(CallLog.Calls.CACHED_NAME)); 

      } catch (Exception e) { 
      } finally { 
       if (name == null || name.equals("")) { 
        name = "UNKNOWN"; 
       } 
      } 
      Log.e("My App", name + " : "+number + " : "+type); 
     } catch (Exception e) { 
      Log.e("My App", "Error in creation"); 
     } 
    } while (cursor.moveToNext()); 

Répondre

2

c'est juste une suggestion. vous obtenez une meilleure réponse plutôt que ce ...

voir si vous voulez obtenir le protocole SMS puis utilisez le code ci-dessous .. et vous obtenez déjà le journal des appels .. donc si vous voulez mélanger appel et SMS se connecter dans une liste puis vous devez avoir à le faire par date ..

dans l'appel que vous vous connecterez obtenir la date & heure dans sms aussi vous obtenez la date & heure

code journal sms ...

mettre cela en méthode et utiliser votre propre chemin ..

CharSequence contentTitle = getString(R.string.app_name); 
      final ProgressDialog progDailog = ProgressDialog.show(
        All_logs_tab.this, contentTitle, "Please wait...", true); 
      final Handler handler = new Handler() { 
       @Override 
       public void handleMessage(Message msg) { 
         /* finish sms load */ 
       } 
      }; 

      new Thread() { 
       public void run() { 
        try { 

         Uri myMessage = Uri.parse("content://sms/"); 
         ContentResolver cr = con.getContentResolver(); 
         Cursor c = cr.query(myMessage, new String[] { "_id", 
           "address", "date", "body", "read" }, null, 
           null, null); 

         startManagingCursor(c); 
         getSmsLogs(c, con); 

        } catch (Exception e) { 
        } 
        handler.sendEmptyMessage(0); 
        progDailog.dismiss(); 
       } 
      }.start(); 

............................................. .... i ajouté tous les détails de sms dans la liste de tableau

 ArrayList<String> sms_id = new ArrayList<String>(); 
    ArrayList<String> sms_num = new ArrayList<String>(); 
    ArrayList<String> sms_Name = new ArrayList<String>(); 
    ArrayList<String> sms_dt = new ArrayList<String>(); 
    ArrayList<String> sms_body = new ArrayList<String>(); 

.............................. ..........................

public void getSmsLogs(Cursor c, Context con) { 

     if (sms_num.size() > 0) { 
      sms_id.clear(); 
      sms_num.clear(); 
      sms_Name.clear(); 
      sms_body.clear(); 
      sms_dt.clear(); 
     } 

     try { 

      if (c.moveToFirst()) { 
       do { 



        if (c.getString(c.getColumnIndexOrThrow("address")) == null) { 
         c.moveToNext(); 
         continue; 
        } 

        String _id = c.getString(c.getColumnIndexOrThrow("_id")) 
          .toString(); 

        String Number = c.getString(
          c.getColumnIndexOrThrow("address")).toString(); 
        String dat = c.getString(c.getColumnIndexOrThrow("date")) 
          .toString(); 

        String as = (String) get_dt(dat, "dd/MM/yyyy, hh.mma"); 
        String Body = c.getString(c.getColumnIndexOrThrow("body")) 
          .toString(); 
        String name = getContactDisplayNameByNumber("" + Number, 
          con); 

        if (name.length() <= 0 || name.length() == 1) { 
         name = "no name"; 
        } 
        sms_id.add(_id); 
        sms_num.add(Number); 
        sms_Name.add("" + name); 
        sms_body.add(Body); 
        sms_dt.add(as); 

       } while (c.moveToNext()); 
      } 
      c.close(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
+0

monsieur, cela fonctionne très bien, pourquoi il n'est pas là dans la documentation de l'API. et quelle est la manière d'api de le faire. si le sait s'il vous plait – javaG

0

Vous avez besoin de l'URI dans la table des messages SMS pour récupérer les données. Il peut être trouvé dans le code source de base, cependant; Google ne recommande pas de le faire.

+0

alors il n'y a pas de manière réelle de le faire aussi ou il y a un? – javaG

0

utiliser ce lien Android call logs pour récupérer les journaux d'appels. pour les SMS faire la même chose en utilisant SMS_URI = "content: // sms", mais ce n'est pas recommandé car il n'est pas public URi.

Questions connexes