1

我有一个简单的广播接收器设置来接收系统意图,通知我的应用程序网络状态的变化。这个想法是要么显示一个对话框,告诉用户他们已经离开了运行应用程序的 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");
        }
    }
}

}

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

4

2 回答 2

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

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

我的另一个选择是使用带有字符串和布尔额外测试的意图将用户跳回我的登录活动。是不是很糟糕

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

于 2012-06-21T12:09:41.683 回答
0

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

于 2012-06-21T12:25:26.293 回答