2013-03-31 22 views
7

Tôi có một số mã để xóa tin nhắn SMS Android theo chương trình nhưng khi tôi cố gắng xóa nó trong onReceive thì không có tin nhắn SMS nào bị xóa.Xóa sms android sau khi nhận được Không chậm trễ

Mẫu mã để xóa 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()); 
} 

Khi tôi dán này trong onReceived thì SMS mới không bị xóa.

+0

có giải pháp nào không ?? –

+0

@ user2229896 chấp nhận câu trả lời để nó sẽ bị xóa khỏi danh sách chưa được trả lời trên stackoverflow. – Ayush

Trả lời

5

Bạn cần phải thêm quyền truy cập vào file manifest của bạn và tăng ưu tiên của lớp SMS Receiver của bạn

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

này là bởi vì nó sẽ gọi SMSReceiver trước khi bất kỳ hoạt động cấp hệ điều hành tương tự (Tiết kiệm SMS, thông báo, SMS Sound và v.v.).

Sau đó, trong SMSReceiver onReceive() bạn cần phải thêm abortBroadcast() để hủy bỏ bất kỳ chương trình truyền hình hơn nữa

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

đó là tất cả

cổ vũ

Ayush Shah

0

Bạn phải xóa sms với Smsid

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