Диалоговое окно настроек беспроводной сети

я проверяю сетевое соединение, используя следующий код:

public static boolean haveInternet(Context ctx) 
{
    NetworkInfo info = (NetworkInfo) ((ConnectivityManager) ctx.getSystemService(Context.CONNECTIVITY_SERVICE)).getActiveNetworkInfo();

   if (info == null || !info.isConnected()) {
          return false;  // no connection
   }

  return true;   // true if having connection
}       

Теперь при «нет подключения» я запускаю диалоговое окно «Настройки беспроводной сети», используя следующий код:

    context.startActivity(new Intent(Settings.ACTION_WIRELESS_SETTINGS));

Здесь пользователь может «включить/выключить» беспроводную связь, как теперь узнать, включил ли пользователь Wi-Fi или нет? то есть какой результат возвращается вышеуказанным намерением при успешном беспроводном соединении. как это проверить?

Я думаю, мне нужно вызвать метод startActivityForResult, но я не знаю, как мне это сделать?

Обновление:

Я хочу сделать так же, как http://groups.google.is/group/android-developers/msg/6874a5e4675dffdb


person Paresh Mayani    schedule 08.10.2010    source источник
comment
Привет, сэр, столкнулся с той же проблемой, я использую BroadcastReceiver, чтобы проверить, включил ли пользователь Wi-Fi, затем должна начаться загрузка, но мой приемник никогда не получает вызов. Я не понимаю, где нужно вызывать sendBroadcast().   -  person Nitish    schedule 11.06.2013


Ответы (1)


теперь, как мне узнать, включил ли пользователь Wi-Fi или нет? то есть какой результат возвращается вышеуказанным намерением при успешном беспроводном соединении. как мне это проверить?

Результата нет. Вы проверяете это, вызывая код, который вы показали выше, или отслеживая соответствующие широковещательные намерения (см. ConnectivityManager и его CONNECTIVITY_ACTION или WifiManager и его WIFI_STATE_CHANGED_ACTION или NETWORK_STATE_CHANGED_ACTION).

Я думаю, мне нужно вызвать метод startActivityForResult, но я не знаю, как мне это сделать?

Это действие не поддерживает startActivityForResult().

person CommonsWare    schedule 08.10.2010
comment
@CommonsWare спасибо за поддержку, но как я могу отслеживать намерения трансляции? я не знаю об этом, пожалуйста, дайте мне знать - person Paresh Mayani; 08.10.2010
comment
@Paresh Mayani: зарегистрируйте BroadcastReceiver на IntentFilter, чтобы следить за этими действиями. Если только ваша активность заботится об изменениях, вызовите registerReceiver() для регистрации BroadcastReceiver, но обязательно вызовите unregisterReceiver() позже. Например, вот приложение, которое следит за трансляцией ACTION_BATTERY_CHANGED: github .com/commonsguy/cw-advandroid/tree/master/SystemEvents/ - person CommonsWare; 08.10.2010
comment
@CommonsWare, я действительно застрял, потому что, если есть соединение, я получаю xml из URL-адреса, а если нет (то есть иначе), я показываю диалоговое окно, теперь диалоговое окно позволяет вам настроить беспроводную связь, где я могу установить Wi-Fi вкл / выкл, как только я вкл / выкл wi-fi, я вернулся к исходному действию, нажав кнопку «Назад», теперь соединение доступно, покажите, что оно должно получить xml, пожалуйста, покажите мне путь, пожалуйста - person Paresh Mayani; 08.10.2010
comment
@CommonsWare, я ничего не знаю о намерении трансляции - person Paresh Mayani; 08.10.2010
comment
@CommonsWare я нашел одну ссылку, где приведены материалы, связанные с трансляцией: stackoverflow.com/questions/2294971/, вы об этом говорите, верно? - person Paresh Mayani; 08.10.2010
comment
@Paresh Mayani: Это один из способов сделать это, хотя, вероятно, не так, как вы хотите. Это помещает BroadcastReceiver в манифест, что означает, что вы будете получать трансляции всякий раз, когда они происходят, независимо от того, выполняется ли ваша активность. В вашем случае, я думаю, вы будете заботиться только о трансляциях, пока ваша активность используется, и в этом случае пример приложения, на которое я ссылался (дважды), является более подходящей моделью. - person CommonsWare; 08.10.2010