Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get SMS of specific phone number

Tags:

android

I am wondering, how can I read sms message for a specific number programmatically? I know how to read sms using content provider but not sure if I should use the "person" column or "address" column or totally different way Please help Thanks

like image 886
Snake Avatar asked Feb 06 '13 04:02

Snake


2 Answers

It will list out messages from specified number.

 Uri mSmsinboxQueryUri = Uri.parse("content://sms/inbox");
         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());
            while (cursor1.moveToNext()){
                String address = cursor1.getString(cursor1.getColumnIndex(columns[0]));

                if(address.equalsIgnoreCase("number")){ //put your number here
                     String name = cursor1.getString(cursor1.getColumnIndex(columns[1]));
                     String date = cursor1.getString(cursor1.getColumnIndex(columns[2]));
                     String body = cursor1.getString(cursor1.getColumnIndex(columns[3]));
                     String type = cursor1.getString(cursor1.getColumnIndex(columns[4]));

                     Log.d("*******", "body="+body);

               }


             }
         }

But I came across "content://mms-sms/conversations/" I think it will return directly entire conversation of specific number with the help thread_id, check this

like image 196
RobinHood Avatar answered Nov 15 '22 11:11

RobinHood


You may use SelectionArgs to be more efficient:

String[] phoneNumber = new String[] { "+18839494492" }; //the wanted phone number
Cursor cursor1 = getContentResolver().query(Uri.parse("content://sms/inbox"), new String[] { "_id", "thread_id", "address", "person", "date","body", "type" }, "address=?", phoneNumber, null);

With this change you only get the sms from the wanted number and you have not to crawl through all received SMS.

like image 31
Flitzpiepe Avatar answered Nov 15 '22 12:11

Flitzpiepe