当前位置:  开发笔记 > Android > 正文

ANDROID:如果WiFi已启用且处于活动状态,则启动意图

如何解决《ANDROID:如果WiFi已启用且处于活动状态,则启动意图》经验,为你挑选了3个好方法。

这就是我想做的事情:

=>如果WiFi已启用且处于活动状态,则启动一个意图(实际上它是一个获取其内容的WebView =>我在网络上的应用程序的说明)

=>如果不是,那么我会启动另一个意图,这样我就不会显示WebView"Web页面不可用... http://www.mywebsite.com上的网页可能暂时关闭或者可能有感动..."

我最初打算使用

如果(wifi.isWifiEnabled())

但这并没有说明Wifi连接是否为ACTIVE.它只表示用户已打开开关.设备可能连接也可能没有连接......这是正确的吗?

然后我试着用:

if(wifi.getConnectionInfo().getSSID()!= null)

但我注意到它返回一个字符串,即使连接已丢失或被禁用...?

那我该怎么办?

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

是否有更通用的方法来测试设备是否在启动意图之前连接到互联网?无论是通过Wifi,3G等...

在此先感谢您的帮助.



1> Henrique Roc..:

您可以使用以下代码检查连接:

private static boolean isConnected(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager)
        context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = null;
    if (connectivityManager != null) {
        networkInfo =
            connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    }
    return networkInfo == null ? false : networkInfo.isConnected();
}

请确保您已在Manifest中注册了android.net.conn.CONNECTIVITY_CHANGE意图,否则,您将永远不会收到有关您在线的通知.

在过去的几天里,我一直在努力解决这个问题,现在我才意识到我需要注册CONNECTIVITY_CHANGE而不仅仅是WIFI_STATE_CHANGED.



2> lencinhaus..:

尝试android.net.ConnectivityManager.getActiveNetworkInfo():如果它返回null你没有连接; 如果它返回一个NetworkInfo对象,你可以检查连接的状态NetworkInfo.getState(),如果是,NetworkInfo.State.CONNECTED那么你就连接了,否则你不是.



3> Donal Raffer..:

你可以这样做:

  @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取决于Wifi所处的状态,因此例如2连接,您可以检查文档中的其余部分

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有