Android广播接收器和传递意图

时间:2012-06-21 12:03:16

标签: java android networking

我有一个简单的广播接收器,用于接收系统意图,通知我的应用程序网络状态的变化。我们的想法是要么显示一个对话框,告诉用户他们已经离开了应用程序运行的WiFI网络,或者完全丢失了连接。

public class NetworkChangedReceiver extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {

    if(intent.getAction().equals(WifiManager.SUPPLICANT_CONNECTION_CHANGE_ACTION)){

        boolean connected = intent.getBooleanExtra(WifiManager.EXTRA_SUPPLICANT_CONNECTED,false);
        if(!connected){
            //connection off
            Log.w("Network Changed","SUPPLICATION_CONNECTION_CHANGE_ACTION");



        }
    }else if(intent.getAction().equals(WifiManager.NETWORK_STATE_CHANGED_ACTION)){

        NetworkInfo info = intent.getParcelableExtra(WifiManager.EXTRA_NETWORK_INFO);
        if(info.isConnected()){
            //connection on or WIFI changed
            Log.w("Network Changed","NETWORK_STATE_CHANGED_ACTION");
        }
    }
}

}

我是否有可能以这种方式显示对话框?我无法知道用户在应用程序中的位置,收到广播时的未知状态。我的另一个选择是使用带有字符串和布尔额外值的测试将用户跳回到我的登录活动。这样做是不好的编程习惯吗?

2 个答案:

答案 0 :(得分:2)

I have no way of knowing where the user is in the application, 

在这种情况下,当您收到广播时,您应该考虑在通知栏中显示通知

  

我的另一个选择是使用a将用户跳回到我的登录活动   意图使用字符串和布尔额外来测试。不好吗

当用户点击通知时,您可以将其导航到登录活动。

答案 1 :(得分:0)

在你的每个活动中放置相同的brodcast接收器,在这种情况下,活动将在前面接收此广播,然后你可以显示一个对话框,说明该活动中的连接丢失并做你想做的任何事情。