2015-02-07 4 views
1
  1. У меня есть SMSlist_activity.java, который отображает список sms-разговора.
  2. У меня есть sms_receiver.java, который является широковещательным приемником для входящих смс.

Теперь я хочу, чтобы обновить список разговора смс в SMSlist_activity.java, когда смс получил через sms_receiver.java, конечно, это обновление будет только произойдет, если SMSlist_activity.java работает и виден.Обновить активность UI на смс, полученные от широковещательного приемника

Если у кого-то есть идея, я буду рад здесь.

ответ

1

Наконец-то я нашел решение с широковещательными приемниками. INT sms_receiver.java, когда получили смс, я вещать намерение:

  Intent intent2 = new Intent(); 
      intent2.setAction("co.ir.ts.app.sms.smsumad"); 
      context.sendBroadcast(intent2); 

В манифесте приложения в определении SMSlist_activity.java добавить Intent фильтра, чтобы мой SMSlist_activity.java может принимать широковещательный:

<activity 
     android:name=".activity.SMSlist_activity"> 
     <intent-filter> 
      <action android:name="co.ir.ts.app.sms.smsumad" > 
      </action> 
     </intent-filter> 
    </activity> 

Теперь в главном классе SMSlist_activity.java определяют широковещательный приемник:

private BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     //Updating UI here 
    } 
}; 

в методе onResume регистр приемник, созданный ранее:

@Override 
protected void onResume() { 
    // TODO Auto-generated method stub 
    IntentFilter filter = new IntentFilter(); 
    filter.addAction("co.ir.ts.app.sms.smsumad"); 
    registerReceiver(receiver, filter); 
    super.onResume(); 
} 

и, наконец, в методе OnPause разрегистрировать приемник:

protected void onPause() 
{ 
    unregisterReceiver(receiver); 
    super.onPause(); 
    if (isSentPending) 
    { 
     unregisterReceiver(sent); 
    } 
} 
Смежные вопросы