I am making an application that searches for messages in the inbox based on the sender number. Here is my code:
public void onClick(View v) { Toast.makeText(this, "search", Toast.LENGTH_LONG).show(); final Uri SMS_INBOX = Uri.parse("content://sms/inbox"); String[] colList = {"address", "body"}; Cursor c = getContentResolver().query(SMS_INBOX, colList, null, null,"DATE desc"); String yz= String.valueOf(c.getCount()); Toast.makeText(this, yz, Toast.LENGTH_LONG).show(); if(c.moveToFirst()) { Toast.makeText(this, searchtxt.getText(), Toast.LENGTH_LONG).show(); for(int i=0;i<c.getCount();i++) { String number=c.getString(c.getColumnIndexOrThrow("address")).toString(); boolean match = number.toUpperCase().indexOf(searchtxt.getText().toString()) != -1; if (match) { Toast.makeText(this, String.valueOf(i), Toast.LENGTH_LONG).show(); String body= c.getString(c.getColumnIndexOrThrow("body")).toString(); tv.setText(tv.getText() + "\n" + body); } c.moveToNext(); } } else { Toast.makeText(this, "Inside else", Toast.LENGTH_LONG).show(); } c.close(); }
The above code works fine, but it retrieves all the messages in the inbox. I want him to receive only those messages that match the sender's number. To do this, I tried the query using the LIKE clause, but with that it returns 0 records. What is the correct way to use the LIKE clause. Here is the code I tried to use LIKE
String[] colList = {"address", "body"}; String[] argList = {"'%"+searchtxt.getText().toString()+"%'"}; Cursor c = getContentResolver().query(SMS_INBOX, colList, "address LIKE ?", argList,"DATE desc"); String yz= String.valueOf(c.getCount()); Toast.makeText(this, yz, Toast.LENGTH_LONG).show();
Please help me .... Thanks ...
source share