2010-05-05 6 views
5

Jeder weiß, welche Datenstrukturen zu den Speichern Nachrichten in einer SMS-Client-App verwendet werden, und ob es eine vorhandene API für diese gibt.Datenstruktur für SMS-Nachrichten in Android

Ich habe vielleicht versucht, eine Linkliste für diesen Zweck zu implementieren, aber wenn die Arbeit bereits in einer API erledigt wurde, wäre es vielleicht unnötig, Zeit für die Aufgabe zu investieren, die für die Programmierung anderer Teile aufgewendet werden könnte.

Vielen Dank

Antwort

1

In Android gibt es android.telephony.SmsMessage. Dies ist das Objekt, das in Android zum Speichern einer einzelnen SMS-Nachricht verwendet wird. Sie können das betrachten und etwas bauen, das ihm ähnelt oder es wiederverwenden.

Soweit die Datenstruktur für die Speicherung von ihnen, würde ich vorschlagen, Sie verwenden eine java.util.List<E>, die Ihnen viel mehr Flexibilität über einige der anderen Datenstrukturen, wie ein Standard-Array [].

Wenn Sie Ihre SMS-Nachrichten über einen längeren Zeitraum speichern möchten, würde ich Ihnen auch empfehlen, sich die Persistenz mit SQLlite, which is also a part of the Android platform anzusehen.

1

Wie bei der integrierten Messaging-App werden alle Nachrichten in einer Datenbank gespeichert. Sie können sich den Android-Quellcode ansehen, um zu sehen, was er tut, aber ich würde Ihnen empfehlen, diese Daten nicht zu lesen - sie sind nicht Teil des offiziellen SDKs, daher könnte sich das ändern, oder einige Telefone haben es nicht.

Wie zum Speichern selbst - ich würde nicht eine verkettete Liste verwenden. Verwenden Sie eine Datenbank. Dies ist die bevorzugte Methode zum Speichern persistenter Daten (abgesehen von kleinen individuellen Werten, für die Sie SharedPreferences verwenden).

1
Uri uriSMS=Uri.parse("Content://sms/inbox"); 
     Cursor cur=getContentResolver().query(uriSMS,null,null,null,null); 
     String[] sender=new String[100];String[] content=new String[100];int ct=0; 
     While(cur.moveToNext()){ 
      sender[ct]=cur.getString(2);//arg2: this is address 
      content[ct]=cur.getString(11);//arg11: this is body of SMS 
//[0: _id,1: thread_id,2: address,3: person,4: date,5: protocol,6: read,7: status,8: type,9: reply_path_present,10: subject,11: body,12: service_center,13: locked,14: error_code,15: seen] 
     } 

Dies ist die Struktur von Inhalten in SMS, zum Beispiel, bekomme ich arg2 und arg11 dies ist die Adresse und den Inhalt der SMS. Mit diesem Beispiel können Sie alle in Telefon

gespeicherten SMS lesen