Estoy haciendo una aplicación que busca mensajes en la bandeja de entrada según el número del remitente. Aquí está mi código:Cómo utilizar la cláusula LIKE en la función de consulta
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();
}
El código anterior funciona bien pero recupera todos los mensajes en la bandeja de entrada. Quiero que recupere solo aquellos mensajes que coinciden con el número del remitente. Para eso probé una consulta usando la cláusula LIKE, pero con eso devuelve 0 registros. ¿Cuál es la forma correcta de usar la cláusula LIKE? Aquí está el código que he intentado usar COMO
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();
por favor me ayude .... Gracias ...
Tal vez debería usar ILIKE, que hace que la consulta sea insensible a – Alptugay
Thanx Alptugay .... pero no funciona .. –