Хочу удалять ненужные смс, причем так чтобы не срабатывало уведомление о приходе смс.
смс ловлю так:
Код: Выделить всё
br = new BroadcastReceiver() {
// действия при получении сообщений
public void onReceive(Context context, Intent intent) {
Log.d(LOG_TAG, "onReceive");
Bundle bundle = intent.getExtras();
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] msgs = new SmsMessage[pdus.length];
ArrayList<String> numbers = new ArrayList<String>();
ArrayList<String> messages = new ArrayList<String>();
//пробегаемся по всем полученным сообщениям
for (int i=0; i<msgs.length; i++){
msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
numbers.add(msgs[i].getOriginatingAddress()); //получаем номер отправителя
messages.add(msgs[i].getMessageBody().toString());//получаем текст сообщения
}
if (messages.size() > 0 ){
String numb="";
for (String c : numbers) {
numb+=c;
}
String mess=": ";
for (String c : messages) {
mess+=c;
}
Log.d(LOG_TAG, numb);
Log.d(LOG_TAG, "mess" + " " +mess);
Log.d(LOG_TAG, "random" + " " +random);
//Toast.makeText(context, mess, Toast.LENGTH_LONG).show();
if(mess.equals(": "+random)){
//new MyAsyncTask().execute(name);
smsDelete();
Toast.makeText(context, "OK ! ! !", Toast.LENGTH_LONG).show();
}
}// if (messages.size() > 0 )
} // if (bundle != null)
}//onReceive
};p.s. пробовал так, но это вроде для удаления уже принятых смс:
Код: Выделить всё
context = this;
Uri inboxUri = Uri.parse("content://sms/inbox");
int count = 0;
Cursor c = context.getContentResolver().query(inboxUri , null, null, null, null);
while (c.moveToNext()) {
try {
String address = c.getString(c.getColumnIndex("address"));
String body = c.getString(c.getColumnIndex("body"));
Log.d("log",address+" = "+body);
if(body.equals("315")){
// Delete the SMS
String pid = c.getString(0); // Get id;
String uri = "content://sms/" + c.getString(0);
count = context.getContentResolver().delete(Uri.parse(uri),null, null);
}
} catch (Exception e) {
}
}