2011-06-03 169 views
0

如何使用我的廣播接收器?就像我的應用程序啓動時一樣,我如何讓接收器不斷運行其代碼?如何使用廣播和接收器

我Reciver代碼:

private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 

     ConnectivityManager mConnectivity; 
     mConnectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); 

     NetworkInfo info = mConnectivity.getActiveNetworkInfo(); 
     if (info == null || !mConnectivity.getBackgroundDataSetting()) { 

      wifi.setChecked(false); 

      return; 
     } else { 
      int netType = info.getType(); 
      //int netSubtype = info.getSubtype(); 
      if (netType == ConnectivityManager.TYPE_WIFI) { 

       wifi.setChecked(true); 

      } else { 

       wifi.setChecked(false); 

      } 
     } 

    } 
}; 

無線網絡連接的方式切換按鈕。

請幫忙謝謝!

回答

1

你需要設置你的接收器在manifest.xml文件喜歡此相關的意圖過濾器:

<receiver android:name="<fully qualified name of your receiver class>" android:label="@string/label"> 
<intent-filter> 
     <action android:name="package name + your action name" /> 
    </intent-filter> 
</receiver> 

那麼,在你的活動,當你想打電話給你的接收器,你只需

sendBroadcast(new Intent("package name + your action name")); 

然後你應該更新你的應用程序,但在UI線程內改變一個widget:

final boolean checked = true; 
runOnUIThread(new Runnable() { 
    public void run() 
    { 
     wifi.setChecked(checked): 
    } 
}); 

但我猜你是接收者是一個活動內部的類(只能獲得一個widget的參考)。所以,不要通過xml註冊你的接收器,你應該通過代碼註冊它。請參考this thread

問候, 斯特凡

+0

@Ciehanski應用程序 - 所有這一切需要在這個方法的頂部提到的,是你只需添加到您的源類,它擴展,而不是在你的活動創建一個內部類廣播接收器。 – Maximus 2011-06-03 21:21:59

+0

謝謝,但我不明白你需要什麼線程? – Test2e31234234 2011-06-03 21:23:34

+0

要更新小部件,您*必須*在UI線程中。 而@Maximus,如果它不是內部類,那麼你如何獲得小部件的引用? – Snicolas 2011-06-03 21:25:19