2012-02-26 2 views
0

В моем приложении у меня есть одна служба, которая обновляет все элементы GUI. Поэтому мне нужно зарегистрировать мой сервис в CONNECTIVITY_CHANGE_ACTION. Чтобы он мог уведомлять всю активность об обновлении GUI всякий раз, когда он получает какие-либо обновления соединения, как широковещательные.ANDROID: Как зарегистрироваться для изменения связи из Сервиса?

Чтобы достичь этого, я объявил о служении вещания для публичного участника. Ниже приведены фрагменты кода.

public class BkgService extends Service{ 

public class ConnectionUpdater extends BroadcastReceiver{ 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      NetworkInfo info = (NetworkInfo) ((ConnectivityManager) context 
.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo(); 

      if (info == null || !info.isConnected()) { 

      } 
      else{ 
       cd.setIsOnline(true,context); 
      } 

      Intent intent1 = new Intent(); 
      intent1.setAction(ACTION_GUI_UPDATE); 
      sendBroadcast(intent1); 
     } 

} 

в моем файле манифеста я заявил, как этот

<service android:name=".BkgService" /> 

<receiver android:name="BkgService.ConnectionUpdater"> 
    <intent-filter> 
     <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> 
    </intent-filter> 
</receiver> 

Я не получаю сообщение об ошибке для этого. Но я не получаю обновления для трансляции, когда я включаю/отключу данные 3G в виртуальном устройстве. Пожалуйста, предложите, что может быть неправильным? Я делаю это правильно?

ответ

1

Try ...

<receiver android:name=".BkgService$ConnectionUpdater"> 

Вы пропустили . до того BkgService и название внутреннего класса должно быть отделено от основного класса с $ знаком.

+0

спасибо за ваше предложение. Я внес необходимые изменения. Я получаю трансляцию. Но моя программа сразу же срабатывает сразу после получения трансляции. Это ошибка, которую я получаю: 02-26 04: 48: 04.081: E/AndroidRuntime (1222): java.lang.RuntimeException: не удалось создать экземпляр приемника mt.android.app.BkgService $ ConnectionUpdater: java.lang.InstantiationException: mt .android.app.BkgService $ ConnectionUpdater –

+0

Причиной вашего исключения может быть то, что ваш внутренний класс не является статичным, следовательно, при создании экземпляра он ссылается на внешний класс. Таким образом, Android Runtime не может создать экземпляр без передачи ссылки на внешний класс. Попробуйте объявить ваш внутренний класс '' static''. –