Kde sú uložené SMS správy v Android telefóne

android-sms-iconJednoduchá odpoveď: v SQlite databáze v súbore /data/data/com.android.providers.telephony/databases/mmssms.db

A ako si SMS správy prečítam?

Spustíme ADB shell a prepneme sa na roota cez “su”:

$ adb shell
shell@android:/ $ su -

Teraz otvoríme SQlite databázu a pozrieme si, aké tabuľky v nej máme:

# sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db
sqlite> .tables
addr pdu threads
android_metadata pending_msgs words
attachments rate words_content
canonical_addresses raw words_segdir
drm sms words_segments
part sr_pending

Prípadne si ešte pozrieme to, akú štruktúru má tabuľka sms:

sqlite> .schema sms
CREATE TABLE sms (
  _id INTEGER PRIMARY KEY,
  thread_id INTEGER,
  address TEXT,
  person INTEGER,
  date INTEGER,
  date_sent INTEGER DEFAULT 0,
  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,
  sub_id INTEGER DEFAULT 0
);
...

Z výpisu schémy tabuľky sms som odstránil výpis triggerov, ktoré majú za úlohu aktualizovať tabuľku threads.

A keď si chcete rovno vypísať zoznam našich SMS správ:

sqlite> SELECT * FROM sms;

A ešte na záver takýto pekný univerzálny command:

adb wait-for-device && \
  adb shell 'su - root \
    sqlite3 /data/data/com.android.providers.telephony/databases/mmssms.db \
    "SELECT address, date, body FROM sms"'