2013-10-12 7 views
5

Czy jakakolwiek inna właściwość wiadomości SMS zostanie zmodyfikowana, jeśli użytkownik odczyta wiadomość SMS (z natywnego) z wyjątkiem "odczytu"?Czy jakakolwiek własność wiadomości SMS zostanie zmodyfikowana, jeśli użytkownik przeczyta wiadomość SMS (z natywnego) z wyjątkiem "odczytu"?

Dla np .:

int read_status = cur1.getInt(cur1.getColumnIndex("read")); 

read_status staną 1 do odczytu wiadomości SMS.

Proszę mnie poprowadzić.

+0

Co to jest "z native"? Jeśli masz na myśli "z domyślnego klienta SMS", który z ~ 100 z nich masz na myśli? – CommonsWare

+0

Cześć, dziękuję za odpowiedź. Tak, "z natywnego" oznacza "z domyślnego klienta SMS na urządzeniu". Właściwie głównym problemem jest http://stackoverflow.com/questions/19333961/how-to-get-notify-which-sms-got-read-from-nativephone-if-multiple-unread-sms-a Proszę, poprowadź mnie do rozwiązania problem –

Odpowiedz

2

Poniższy kod pozwoli ci określić, czy inne właściwości oprócz "odczytu" zmieniają się, drukując kolumny i odpowiadające im wartości dla wszystkich wiadomości zwracanych przez dostawcę treści SMS. Na podstawie szybkiego testu, który przeprowadziłem na Nexusie S z Androidem 4.1.2 JZO54K, wydaje się, że niestety nie ma innych wartości, które są modyfikowane, gdy SMS zmienia się z nieprzeczytanego na odczytany.

Istnieje powiązana "widziana" właściwość, która może być jednak interesująca. Zmienia się od 0 do 1, gdy wiadomość SMS została przedstawiona użytkownikowi, ale potencjalnie przed odczytaniem zawartości wiadomości (np. Gdy jest wyświetlana w widoku podsumowania natywnej aplikacji Wiadomości). Związek pomiędzy "widzianym" i "czytanym" można lepiej zrozumieć, przeglądając zastosowania w klasie com.android.mms.data.Conversation.

Stan odczytu można również pobrać przy użyciu metody android.telephony.SmsMessage.getStatusOnIcc(), ale prawdopodobnie uzyskają te same informacje, które są już pobierane od dostawcy treści. Możesz chcieć śledzić zmiany w API SMS, które są Google is indicating will be coming in Android 4.4 (KitKat), ponieważ mogą pomóc w rozwiązaniu problemu, ale mogą również złamać istniejącą implementację, jeśli polega ona na ukrytych interfejsach API/dostawcach treści.

/* for use within a ContentObserver class; print all messages & fields 
    from the SMS Content Provider when change to mmssms.db is detected; 
    not optimized for production use */ 
    public void onChange(boolean selfChange) { 
    super.onChange(selfChange); 
    Uri uri = Uri.parse("content://sms/inbox"); 
    Cursor c= getContentResolver().query(uri,null,null,null,null); 
    if(c.moveToFirst()){ 
     for(int i=0;i<c.getCount();i++){ 
     Log.d(TAG,"======= Message ID "+c.getString(c.getColumnIndexOrThrow("_id")).toString()+" ======="); 
     for (int j=0;j<c.getColumnCount();j++){ 
      Log.d(TAG,c.getColumnName(j)+" = "+c.getString(j)); 
     } 
     } 
    }  
    } 
} 
Powiązane problemy