如何使用广播和接收器

时间:2011-06-03 20:56:18

标签: android broadcastreceiver

如何使用我的广播接收器?就像我的应用程序启动时如何让接收器不断运行其代码?

我的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);

            }
        }

    }
};

顺便说一句,Wifi是一个切换按钮。

请帮助谢谢!

1 个答案:

答案 0 :(得分:1)

您需要在manifest.xml文件中设置与接收者关联的intent过滤器,如下所示:

<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线程内更改小部件:

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

但是我猜你的接收器是一个内部类的一个活动(只有这样才能得到一个小部件的引用)。因此,不应通过xml注册接收器,而应通过代码注册它。

查看this thread

此致  斯特凡