我正在制作一个应用程序,根据发件人编号在收件箱中搜索邮件.这是我的代码:
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();
}
Run Code Online (Sandbox Code Playgroud)
上面的代码工作正常,但它检索收件箱中的所有邮件.我希望它应该只检索那些与发件人号码匹配的邮件.为此,我尝试使用LIKE子句进行查询,但是使用它返回0条记录.使用LIKE子句的正确方法是什么.这是我尝试使用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();
Run Code Online (Sandbox Code Playgroud)
请帮帮我......谢谢......
有两个小丑:"%"和"_".
"%"正在替换任何字符串(多个字符),
"_"正在替换一个(也是唯一一个)字符.
例如 :
LIKE 'B%'
Run Code Online (Sandbox Code Playgroud)
让你找到以"B"开头的所有内容.(比如"蝙蝠侠");
LIKE '%B%'
Run Code Online (Sandbox Code Playgroud)
让你找到包含"B"的everthing.(比如"ABBA");
LIKE'_B%'
Run Code Online (Sandbox Code Playgroud)
让你找到包含一个字符的所有内容,然后是"B".(如"ABERCROMBIE").
如果要检索包含"%"或"_"的字符串,可以使用转义符:
LIKE '%#_B%' ESCAPE #
Run Code Online (Sandbox Code Playgroud)
让你找到任何包含一个"_"后跟一个"B"的字符串.(比如"TEST_BATMAN").
我希望有所帮助.
Al_th
归档时间: |
|
查看次数: |
4357 次 |
最近记录: |