2014-11-02 2 views
0

У меня есть следующий класс для подключения слушателяAndroid: радиовещательный приемник не работает

public class connectionListener{ 
    public ConnectivityManager conMgr; 
    public htmlParserListener vystrahyListener; 
    public htmlParserListener podmienkyListener; 
    private ConnectivityBroadcastReceiver mReceiver; 

    public connectionListener(ConnectivityManager conMgr, htmlParserListener vystrahyListener, htmlParserListener podmienkyListener){ 
     this.conMgr = conMgr; 
     this.vystrahyListener = vystrahyListener; 
     this.podmienkyListener = podmienkyListener; 
    } 

    private class ConnectivityBroadcastReceiver extends BroadcastReceiver { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      System.out.println("connected"); 
     } 
    } 
    public synchronized void startListening(Context context) { 
      IntentFilter filter = new IntentFilter(); 
      filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); 
      context.registerReceiver(mReceiver, filter); 
      System.out.println("start"); 
     } 
    } 

Я его экземпляр с этим кодом (от MainActivity):

connectionListener conLst = new connectionListener(conMgr, vystrahyListener, podmienkyListener); 
    conLst.startListening(this); 

Однако я получаю «старт» в output, поэтому метод startListening работает, но я не подключаюсь, когда отключу или включив мобильные данные. Так что похоже, что мой BroadcastReceiver не работает. Что я делаю не так?

Спасибо вперед

+0

Вы указали в манифесте разрешение . – Chitrang

+0

Да, я положил его – horin

+0

опубликовать ваш манифест или проверить ваш манифест. Цель приемника –

ответ

1

я не получаю «подключен», когда я отключить или включить мобильную передачу данных.

Это правильно. Этот Broadcast не запускается, когда мобильные данные включены или отключены, но только при изменении сетевого подключения.

Похоже, что мой BroadcastReceiver не работает. Что я делаю не так?

Ваш BroadcastReceiver работает правильно. Однако вы ожидаете, что CONNECTIVITY_ACTIONBroadcast будет запущен в случае, когда он не запускается.

Примечание: не существует (другого) Broadcast, который отправляется системой при изменении состояния мобильных данных. У вас также нет возможности зарегистрировать Listener для этого изменения.

+0

Чтобы объяснить ... Я пытаюсь сделать что-то вроде метода обновления флэш-памяти facebook. Когда вы запускаете приложение без Интернета, он говорит, что у вас нет подключения, но как только я включаю мобильные данные или Wi-Fi и т. Д. Это говорит о подключении. Поэтому я хочу сделать то же самое, но мне просто нужно запустить одну асинтеску после установления соединения ... можете ли вы предложить способ сделать это эффективно (лучше всего без использования сервисов)? – horin

+1

Вы можете использовать этот метод из своего исходного вопроса. Затем ваш BroadcastReceiver будет вызван при изменении связи. Этого не происходит, если вы переключаете мобильные данные, пока вы уже подключены, например, через Wi-Fi. Ожидайте задержки между изменением соединения и вызовом получателя. – cygery