Есть много ответов, но я думаю, что все они упускают важную часть этого вопроса.
Прежде чем читать данные из внутренней базы данных или ее таблицы, мы должны понять, как в ней хранятся данные, а затем найти решение вышеуказанного вопроса:
Как программно читать сообщения SMS с устройства в Android?
Итак, в андроид смс таблица выглядит примерно так
Знаете, мы можем выбрать из базы все, что захотим. В нашем случае нам нужно только
идентификатор, адрес и тело
В случае чтения SMS:
1.Просите разрешения
int REQUEST_PHONE_CALL = 1;
if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_SMS}, REQUEST_PHONE_CALL);
}
или
<uses-permission android:name="android.permission.READ_SMS" />
2. Теперь ваш код выглядит так
// Create Inbox box URI
Uri inboxURI = Uri.parse("content://sms/inbox");
// List required columns
String[] reqCols = new String[]{"_id", "address", "body"};
// Get Content Resolver object, which will deal with Content Provider
ContentResolver cr = getContentResolver();
// Fetch Inbox SMS Message from Built-in Content Provider
Cursor c = cr.query(inboxURI, reqCols, null, null, null);
// Attached Cursor with adapter and display in listview
adapter = new SimpleCursorAdapter(this, R.layout.a1_row, c,
new String[]{"body", "address"}, new int[]{
R.id.A1_txt_Msg, R.id.A1_txt_Number});
lst.setAdapter(adapter);
Я надеюсь, что это будет полезно.
Спасибо.