Страница 1 из 1

Как перехватить и удалить смс без уведомления

Добавлено: 08 ноя 2014, 17:51
Astrgan
Здравствуйте.
Хочу удалять ненужные смс, причем так чтобы не срабатывало уведомление о приходе смс.
смс ловлю так:

Код: Выделить всё

 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) {
            }
        }

Re: Как перехватить и удалить смс без уведомления

Добавлено: 09 ноя 2014, 06:02
Astrgan
Разобрался)
Нужно использовать abortBroadcast()

Re: Как перехватить и удалить смс без уведомления

Добавлено: 06 апр 2015, 15:44
Hummer_hard
Кто знает что делать теперь (06.04.2015)? При получении смс abortBroadcast() не помогает, это началось примерно с версии 4.4 и все последующие???