2013-03-31 8 views
7

Ich habe einige Code Android-SMS-Nachrichten programmatisch zu löschen, aber wenn ich versuche, es in onReceive zu löschen, dann wird keine SMS gelöscht.Lösche SMS Android nach dem Empfang Ohne Verzögerung

Code Beispiel 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()); 
} 

zu löschen, wenn ich diese Paste in onReceived dann die neue SMS wird nicht gelöscht.

+0

Gibt es eine Lösung? –

+0

@ user2229896 akzeptieren Sie die Antwort, so dass es aus der unbeantworteten Liste auf Stackoverflow entfernt werden würde. – Ayush

Antwort

5

Sie müssen Berechtigungen für Ihre Manifest-Datei hinzufügen und Priorität Ihrer SMS-Empfänger Klasse

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

Dies ist zu erhöhen, weil es die SMSReceiver vor allen OS Level-Operationen wie (Speichern von SMS aufrufen wird, Benachrichtigung, SMS Sound und so weiter.).

Dann in SMSReceiver OnReceive() SieabortBroadcast() hinzufügen müssen weitere Broadcasts

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

, die alle

prost ist abbrechen

Ayush Shah

0

Sie müssen sms mit 01 löschen

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