2013-03-31 14 views
7

Ho un codice per eliminare i messaggi SMS Android in modo programmatico, ma quando provo a eliminarlo su onReceive, non viene eliminato alcun SMS.Elimina sms android dopo aver ricevuto Senza ritardo

codice di esempio per cancellare sms

try { 
    // mLogger.logInfo("Deleting SMS from inbox"); 
    Uri uriSms = Uri.parse("content://sms/inbox"); 
    Cursor c = context.getContentResolver().query(
     uriSms, new String[] { "_id", "thread_id", "address", "person", 
     "date", "body" }, null, null, null); 

    if (c != null && c.moveToFirst()) { 
     do { 
      long id = c.getLong(0); 
      long threadId = c.getLong(1); 
      String address = c.getString(2); 
      String body = c.getString(5); 

      if (message.equals(body) && address.equals(number)) { 
       // mLogger.logInfo("Deleting SMS with id: " + threadId); 
       context.getContentResolver().delete(Uri.parse("content://sms/" + id), null, null); 
      } 
     } while (c.moveToNext()); 
    } 
} catch (Exception e) { 
    // mLogger.logError("Could not delete SMS from inbox: " + 
    // e.getMessage()); 
} 

Quando ho incolla questo nel onReceived quindi il nuovo SMS non viene eliminato.

+0

c'è qualche soluzione ?? –

+0

@ user2229896 accetta la risposta in modo che venga rimossa dall'elenco senza risposta su stackoverflow. – Ayush

risposta

5

È necessario aggiungere le autorizzazioni al file manifesto e aumentare priorità della vostra SMS ricevitore classe

<receiver android:name=".SMSReceiver" > 
    <intent-filter android:priority="1000"> 
     <action android:name="android.provider.Telephony.SMS_RECEIVED" /> 
    </intent-filter> 
</receiver> 

Questo perché chiamerà lo SMSReceiver prima di qualsiasi operazione di livello OS come (SMS Salvataggio, notifica, SMS Sound e così via.).

Poi nel SMSReceiver OnReceive() è necessario aggiungere abortBroadcast() per sospendere ulteriori trasmissioni

public void onReceive(Context context, Intent intent) { 
    abortBroadcast(); 
} 

che è tutto

applausi

Ayush Shah

0

Devi cancellare sms con Smsid

getContentResolver().delete(Uri.parse("content://sms/" + smsid), null, null); 
Problemi correlati