2014-08-15 3 views
0

Я хочу обновить итоговые сообщения, т. Е. Количество и дату последнего смс и последнего смс при получении новых смс. Но этого не произошло, это произошло только тогда, когда я возобновил активность.BroadcastReceiver не обрабатывает полученные SMS

 getAll.clear(); 
     Uri SMS_INBOX = Uri.parse("content://mms-sms/conversations?simple=true"); 

     c = getContentResolver().query(SMS_INBOX, null, null, null, "date DESC"); 

      startManagingCursor(c); 
      count = new String[c.getCount()]; 
      snippet = new String[c.getCount()]; 
      thread_id = new String[c.getCount()]; 

      String[] num=new String[c.getCount()]; 
     date=new String[c.getCount()]; 
     address=new String[c.getCount()]; 
      c.moveToFirst(); 
      for (int i = 0; i < c.getCount(); i++) 
      { 
       count[i] = c.getString(c.getColumnIndexOrThrow("message_count")) 
         .toString(); 
       thread_id[i] = c.getString(c.getColumnIndexOrThrow("_id")) 
         .toString(); 
       snippet[i] = c.getString(c.getColumnIndexOrThrow("snippet")) 
         .toString(); 
       date[i]=c.getString(c.getColumnIndexOrThrow("date")) 
         .toString(); 

       cur=getContentResolver().query(Uri.parse("content://sms/"), null, "thread_id = " + thread_id[i], null, null); 
       startManagingCursor(cur); 
       cur.moveToFirst(); 
        num[i]=getContactName(this,cur.getString(cur.getColumnIndexOrThrow("address")).toString()); 
       address[i]=cur.getString(cur.getColumnIndexOrThrow("address")).toString(); 
       getAll.add(count[i]+","+num[i]+","+snippet[i]); 
       cur.moveToNext(); 

       c.moveToNext(); 

      } 
      adapter = new HomeAdapter(this, R.layout.sms, getAll,date); 

      adapter.notifyDataSetChanged(); 
      list.setAdapter(adapter); 

Broadcast Ресивер

 if (null != bndl) 
       { 
    //---retrieve the SMS message received--- 
        Object[] pdus = (Object[]) bndl.get("pdus"); 

        msg = new SmsMessage[pdus.length]; 

        for (int i=0; i<msg.length; i++){ 
         msg[i] = SmsMessage.createFromPdu((byte[])pdus[i]);    
         contentTitle=msg[i].getOriginatingAddress().toString(); 
         //contentTitle = (String) DateFormat.format("dd/MM/yy:hh:mm a", new Date(msg[i].getTimestampMillis())); 
         contentText = msg[i].getMessageBody().toString(); 

         } 
        } 

Я перепробовал все методы, но не обновлять и не знаю, что теперь делать. Я застрял в этой проблеме с 6 часов.

+0

Вы можете публиковать свои LogCat сообщения? – Joseph

+0

logcat не обнаружил никакой ошибки –

ответ

0

Это должно работать парень

void update() { 
    getAll.clear(); 
    Uri SMS_INBOX = Uri.parse("content://mms-sms/conversations?simple=true"); 
    Cursor c = getContentResolver().query(SMS_INBOX, null, null, null, "date DESC"); 

    startManagingCursor(c); 
    count = new String[c.getCount()]; 
    snippet = new String[c.getCount()]; 
    thread_id = new String[c.getCount()]; 

    String[] num = new String[c.getCount()]; 
    date = new String[c.getCount()]; 
    address = new String[c.getCount()]; 
    c.moveToFirst(); 

    try { 
     int i = 1; 
     if (c.getCount() >= 1) { 
      while (c.moveToNext()) { 
       if (i == 35) { 
        i = 35; 
       } 

       count[i] = c.getString(c.getColumnIndexOrThrow("message_count")).toString(); 
       thread_id[i] = c.getString(c.getColumnIndexOrThrow("_id")).toString(); 
       snippet[i] = c.getString(c.getColumnIndexOrThrow("snippet")); 
       date[i] = c.getString(c.getColumnIndexOrThrow("date")); 
       Cursor cur = getContentResolver().query(Uri.parse("content://sms/"), null, "thread_id = " + thread_id[i], null, null); 
       cur.moveToFirst(); 
       startManagingCursor(cur); 
       try { 
        num[i] = getContactName(this, cur.getString(cur.getColumnIndexOrThrow("address")).toString()); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       try { 
        address[i] = cur.getString(cur.getColumnIndexOrThrow("address")).toString(); 
       } catch (Exception e) { 
        e.printStackTrace(); 
       } 
       getAll.add(count[i] + "," + num[i] + "," + snippet[i]); 
       i++; 
      } 

     } 

    } catch (Exception e) 

    { 
     e.printStackTrace(); 
    } 
    adapter = new HomeAdapter(this, R.layout.sms, getAll, date); 

    adapter.notifyDataSetChanged(); 
    list.setAdapter(adapter); 

} 
+0

это разбило мое приложение с этой ошибкой 08-16 11: 14: 21.614: E/AndroidRuntime (13659): FATAL EXCEPTION: Thread-119038 08-16 11: 14: 21.614: E/AndroidRuntime (13659): java.lang.NullPointerException 08-16 11: 14: 21.614: E/AndroidRuntime (13659): \t at com.example.sms_app.Home.DoSomeFunkyStuff (Home.java:157) 08-16 11 : 14: 21.614: E/AndroidRuntime (13659): \t at com.example.sms_app.Home.access $ 0 (Home.java:134) 08-16 11: 14: 21.614: E/AndroidRuntime (13659): \t at com.example.sms_app.Home $ 1.run (Home.java:121) –

+0

Какая строка кода работает как 157? – apmartin1991

+0

в этой строке я использую метод DoSomeFunkyStuff() –

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