Using the content converter,
Uri mSmsinboxQueryUri = Uri.parse("content://sms"); Cursor cursor1 = getContentResolver().query( mSmsinboxQueryUri, new String[] { "_id", "thread_id", "address", "person", "date", "body", "type" }, null, null, null); startManagingCursor(cursor1); String[] columns = new String[] { "address", "person", "date", "body", "type" }; if (cursor1.getCount() > 0) { String count = Integer.toString(cursor1.getCount()); Log.e("Count",count); while (cursor1.moveToNext()) { out.write("<message>"); String address = cursor1.getString(cursor1 .getColumnIndex(columns[0])); String name = cursor1.getString(cursor1 .getColumnIndex(columns[1])); String date = cursor1.getString(cursor1 .getColumnIndex(columns[2])); String msg = cursor1.getString(cursor1 .getColumnIndex(columns[3])); String type = cursor1.getString(cursor1 .getColumnIndex(columns[4])); } }
This will read both incoming and sent items. If you want to read only incoming or sent items, you specify them in the content permission.
Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox"); Uri mSmsinboxQueryUri = Uri.parse("content://sms/sent");
To read your SMS you must add use-permission in androidmanifest.xml,
<uses-permission android:name="android.permission.READ_SMS" />
source share