2014-01-24 2 views
2

Я ищу слушателя, когда пользователь удаляет смс из папки «Входящие».Слушать смс удалить андроид

any listener for delete sms in android Мой вопрос повторяется, но в теме нет ответа.

+0

Это не возможно. Я не могу представить, какова ваша цель, но вам нужно найти другой способ сделать то, что вы хотите. –

+0

у вас может быть 2 переменных. OldCount и NewCount. Затем выполните NewCount - OldCount, вы получите удаленный счет sms. –

+1

Уважаемый Ajay GU, я хочу получить удаленный текст, подсчет может и не понадобиться. есть ли способ узнать, какой из них удален? – MTP1376

ответ

1

Я вижу, что многие приложения менеджера sms делают это без какого-либо фонового процесса, если вы удаляете один sms в одном из них, остальные сразу же удаляют это sms тоже, я знаю, что мы можем использовать ContentObserver, но я не думаю, что это правильный путь

в своей деятельности:

public static void InitializeObserver(Context c) { 
    try { 
     ContentResolver contentResolver = c.getContentResolver(); 
     Handler mSmsObserverHandler = new Handler(Looper.getMainLooper()); 
     SmsObserver mSmsObserver = new SmsObserver(mSmsObserverHandler, c); 
     contentResolver.registerContentObserver(Uri.parse("content://sms/"), true, mSmsObserver); 
    } catch (Exception e) { 
    } 
} 

класс наблюдатель:

public class SmsObserver extends ContentObserver { 
SharedPreferences trackMeData; 
private Context c; 

public SmsObserver(Handler handler, final Context c) { 
    super(handler); 
    trackMeData = c.getSharedPreferences("LockedSIM", 0); 
    this.c = c; 
} 

@Override 
public void onChange(boolean selfChange) { 
    super.onChange(selfChange); 

}} 
3

К сожалению, для этого нет намерений трансляции. Вы можете реализовать свою собственную проверку, загрузив счетчик SMS и идентификаторы и сравните этот результат с предыдущим по времени. Он выглядит не очень хорошо и может разряжать батарею, если вы сделаете эту проверку слишком часто, но я думаю, что это единственный способ решить проблему.

Смежные вопросы