SMS speichern

S

Sascha_K1994

Stammgast
81
Guten Abend,

mein Ziel ist es eine SMS in der SMS-App zu speichern.

Also die SMS soll nicht empfangen werden oder gesendet werden, sie soll einfach in den Verlauf reingeschrieben werden.

So laufen auch die meisten "SMS Backup & Restore" - Apps, nur leider finde ich nix hilfreiches, auch die Dev-Seite von Android gab mir nichts :huh: (oder ich war zu blind :glare:)

Habt ihr eine Idee wie das klappenb könnte?!
 
Such mal bei Google anch content://sms
Damit dürftest du einiges zum Thema finden.
 
Vielleicht kann man die Datei, in die die SMSn gespeichert werden laden und einen Eintrag ergänzen.

Greets,
Max
 
Das ist keine Datei sondern eine SQLite DB. Die stellt einen ContentProvider zur verfügung die via content://sms erreichbar ist. Dort kann man dann einfach einen Record hinzufügen und gut ist. Die Tücken könnten aber in den Details liegen.
 
Danke erstmal für die ganzen Antworten.
Das dies via SQLite läuft war mir klar ^^

Werde mit das mit sms:// angucken.

Könntest du mir vielleicht die Tücken nennen?!

Gesendet von meinem Xperia S mit der Android-Hilfe.de App
 
Habe es so probiert, leider klappt gar nix :mellow:

Im Logcat ist nix zu sehen, in der SMS-App ebenfalls nicht :thumbdn:

Code:
// Only Dev-Daten
String Nummer = "017612345678";
String Nachricht = "Hallo 123";

ContentValues cvalues = new ContentValues();
cvalues.put("adress", Nummer);
cvalues.put("body", Nachricht);
getContentResolver().insert(Uri.parse("content://sms/sent"), cvalues);
 
Sascha_K1994 schrieb:
Könntest du mir vielleicht die Tücken nennen?!

Der SMS Provider ist nicht dokumentiert. Du findest also keine Beschreibung zu den jeweiligen Feldern. Du weisst nicht welches Pflichtfleder sind. Hier heisst es einfach problieren und im LogCat schauen ob es Fehlermeldungen gibt. Dort steht dann meistens drin welche Felder noch gefehlt haben.
Zudem sind auch Herstellerspezifische Felder drin. Die solltest du dann nicht nutzen. Bei meinem LGO3D gibt es Felder die mit lge_ beginnen.

Wenn du einen Cursor hast kannst du dir das Schema ganz einfach im LogCat ausgeben lassen.

Code:
Cursor cur = context.getContentResolver().query("content://sms", null, null, null, null);

String out = DatabaseUtils.dumpCursorToString(cur);
Log.v("", out);

Der CursorDump gibt dir einige gute Infos zurück.

Der ursprüngliche Beitrag von 20:00 Uhr wurde um 20:07 Uhr ergänzt:

Sascha_K1994 schrieb:
Habe es so probiert, leider klappt gar nix :mellow:

Im Logcat ist nix zu sehen, in der SMS-App ebenfalls nicht :thumbdn:

Code:
// Only Dev-Daten
String Nummer = "017612345678";
String Nachricht = "Hallo 123";

ContentValues cvalues = new ContentValues();
cvalues.put("adress", Nummer);
cvalues.put("body", Nachricht);
getContentResolver().insert(Uri.parse("content://sms/sent"), cvalues);

Das Feld adress gibt es nicht. Zumindes bei mir nicht. Heisst wohl eher address. Daher, mach einen Cursor Dump und schau dir die Ausgabe an. Oder, wenn du ein gerootetes gerät hast, lade dir die DB runter und schaue sie mit einem SQLite Browser an. Die DB heisst mmssms.db und die Tabelle sms.

Schema bei mir:

CREATE TABLE sms (
_id INTEGER PRIMARY KEY,
thread_id INTEGER,
address TEXT,
person INTEGER,
date INTEGER,
sc_timestamp INTEGER,
protocol INTEGER,
read INTEGER DEFAULT 0,
status INTEGER DEFAULT -1,
type INTEGER,
reply_path_present INTEGER,
subject TEXT,
body TEXT,
service_center TEXT,
locked INTEGER DEFAULT 0,
error_code INTEGER DEFAULT 0,
seen INTEGER DEFAULT 0,
lgeMsgType INTEGER DEFAULT 0,
lgeSiid INTEGER,
lgeCreated INTEGER,
lgeExpires INTEGER,
lgeReceived INTEGER,
lgeAction TEXT,
lgeSec TEXT,
lgeMac TEXT,
lgeDoc TEXT,
doInstalled INTEGER DEFAULT 0,
lgePinRemainCnt INTEGER,
index_on_icc TEXT,
service_msg_sender_address TEXT,
modified INTEGER NOT NULL DEFAULT 1,
modified_time INTEGER)

PS: type = 1 ist empfangen
2 ist gesendet
3 ist draft
 
Die, die mit
Code:
lge
anfangen sind welche von deinem LG ;)

Trotzdem danke, jetzt klappt es :)) :thumbsup:
 
Sascha_K1994 schrieb:
Die, die mit
Code:
lge
anfangen sind welche von deinem LG ;)

Trotzdem danke, jetzt klappt es :)) :thumbsup:

Siehe weiter oben. Nur mit dem _ war ich nicht ganz richtig. :razz:
"Zudem sind auch Herstellerspezifische Felder drin. Die solltest du dann nicht nutzen. Bei meinem LGO3D gibt es Felder die mit lge_ beginnen."
 

Ähnliche Themen

B
Antworten
6
Aufrufe
1.051
jogimuc
J
A
Antworten
10
Aufrufe
1.924
swa00
swa00
H
  • HoustonWeHaveAProblem
Antworten
18
Aufrufe
978
jogimuc
J
Zurück
Oben Unten