Android: если WiFi включают И активен, запустить намерение

Это - то, что я хотел бы сделать:

=>, ЕСЛИ WiFi включают И активен, запустите намерение (на самом деле, это - веб-представление, которое получает его содержание => инструкции моего приложения в сети),

=> В ПРОТИВНОМ СЛУЧАЕ тогда я запустил бы другое намерение так, чтобы я не показывал веб-представление с "Веб-страницей, не доступной... Веб-страница по http://www.mywebsite.com могла бы временно снизиться, или она, возможно, переместилась..."

Я жесткий первоначально для использования

если (wifi.isWifiEnabled ())

но это не говорит, активно ли соединение Wi-Fi или нет. Это говорит только, что пользователь включил переключатель. Устройство может или не может быть подключено... Это корректно?

Тогда я пытался использовать:

если (wifi.getConnectionInfo () .getSSID ()! = пустой указатель)

но я заметил, что это возвращает строку, даже если соединение было потеряно или было отключено...?

Как я должен сделать тогда?

wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
Intent intent_instructions;

            if (wifi.getConnectionInfo().getSSID()!= null){
                Log.i("Hub", "WiFi is enabled AND active !");
                Log.i("Hub", "SSID = "+wifi.getConnectionInfo().getSSID());
                intent_instructions = new Intent(this, Instructions.class);
            }else{
                Log.i("Hub", "NO WiFi");
                intent_instructions = new Intent(this, Instructions_No_WiFi.class);
            }
            this.startActivity(intent_instructions);

Существует ли более общий способ протестировать, если устройство имеет возможность соединения к Интернету прежде, чем запустить намерение? будьте этим через Wi-Fi, 3G, и т.д...

Заранее спасибо за Вашу справку.

15
задан Hubert 28 November 2009 в 07:16
поделиться

2 ответа

Вы можете сделать это следующим образом:

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

  String action = intent.getAction();

        if(WifiManager.WIFI_STATE_CHANGED_ACTION.equals(action)){

         Log.d("WIFI", "WIFI has changed");
         int wifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE, -1);
         Log.d("WIFI", "WIFI State = " + wifiState);
         setCurrentWifiState(wifiState);

         }  

Вы получите 0,1,2,3 в зависимости от того, в каком состоянии находится Wi-Fi, например, 2 подключается, остальное вы можете проверить в документах

5
ответ дан 1 December 2019 в 01:30
поделиться

Попробуйте android.net.ConnectivityManager.getActiveNetworkInfo () : если он возвращает null , у вас нет соединения; если он возвращает объект NetworkInfo , вы можете проверить состояние соединения с помощью NetworkInfo.getState () , и если это NetworkInfo.State.CONNECTED , тогда вы подключен, иначе вы нет.

8
ответ дан 1 December 2019 в 01:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: