Как получить доступ к хранилищу SMS на Android?

Начинающий Android-разработчик.

Я пытаюсь создать приложение, которое будет читать SMS-сообщения, хранящиеся на устройстве, а затем выдавать пользователю статистику о его привычках (например, кому он часто пишет, какие слова часто употребляет и т.д.).

Но, насколько мне известно, способа сделать это не существует. Я просмотрел форумы, и максимум, о чем там говорится, - это доступ к папке "Входящие", где можно найти сообщения, которые пользователь не читал. Как же тогда стандартное приложение и стороннее (например, Handcent) могут отображать одни и те же тексты? Они не ведут собственную базу данных, потому что Handcent отображает все тексты при новой установке.

tl;dr: Как читать SMS-сообщения на Android-устройствах, в частности, сообщения, которые уже были прочитаны.

Комментарии к вопросу (2)
Решение

Конкретный пример доступа к базе данных SMS/MMS можно посмотреть в gTalkSMS.

Комментарии (2)

Вам необходимо вызвать класс SmsManager. Вероятно, вам потребуется использовать константу STATUS_ON_ICC_READ и, возможно, поместить полученные данные в локальную базу данных вашего приложения, чтобы можно было отслеживать, что уже прочитано, а что еще не прочитано. Но имейте в виду, что вы должны объявить использование класса в своем манифесте, так что пользователи увидят, что у вас есть доступ к их SMS, указанный в диалоге разрешений, который они получают при установке. Видеть доступ к SMS - это необычно и может оттолкнуть некоторых пользователей. Удачи.

Вот ссылка, где подробно рассказывается о Sms Manager

Комментарии (1)

Выполните следующие действия, загрузите SQLLite Database Browser с сайта здесь:

Найдите файл db. в телефоне.

Затем, как только вы установите программу, перейдите по ссылке: "Browse Data", вы увидите там все SMS!!!

Вы можете экспортировать данные в файл excel или SQL.

Комментарии (3)