送信者番号に基づいて受信ボックス内のメッセージを検索するアプリケーションを作成しています。ここに私のコードです:問合せ関数でLIKE句を使用する方法
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();
}
上記のコードはうまく動作しますが、受信トレイ内のすべてのメッセージを取得します。送信者番号と一致するメッセージのみを取得する必要があります。そのために、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();
を使用してみましたコードです....ありがとう...
おそらく、大文字小文字を区別しないようにするILIKEを使うべきです。 – Alptugay
Thanx Alptugay ....しかし、それはうまくいきます。 –