Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/179.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查android上是否未连接wifi_Java_Android_Wifi_Android Wifi - Fatal编程技术网

Java 如何检查android上是否未连接wifi

Java 如何检查android上是否未连接wifi,java,android,wifi,android-wifi,Java,Android,Wifi,Android Wifi,我在一个应用程序中写了一些代码来检查手机是否有wifi连接,我可以很好地做到这一点,它可以正常工作,但我真正想检查的是当手机没有连接到wifi,但它似乎无法正常工作时。我想我一定是把语法弄错了。请参见下面的代码: ConnectivityManager connManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE); myWifi = connManager.getNetworkInfo(Connectivit

我在一个应用程序中写了一些代码来检查手机是否有wifi连接,我可以很好地做到这一点,它可以正常工作,但我真正想检查的是当手机没有连接到wifi,但它似乎无法正常工作时。我想我一定是把语法弄错了。请参见下面的代码:

ConnectivityManager connManager = (ConnectivityManager)
getSystemService(CONNECTIVITY_SERVICE);
myWifi = connManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

    if (!myWifi.isConnected()){
        //do something         
    }
试试这个

/*网络检查*/

public static boolean haveNetworkConnection(Context context) {
        boolean haveConnectedWifi = false;
        boolean haveConnectedMobile = false;

        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo[] netInfo = cm.getAllNetworkInfo();
        for (NetworkInfo ni : netInfo) {
            if (ni.getTypeName().equalsIgnoreCase("WIFI"))
                if (ni.isConnected())
                    haveConnectedWifi = true;
            if (ni.getTypeName().equalsIgnoreCase("MOBILE"))
                if (ni.isConnected())
                    haveConnectedMobile = true;
        }
        return haveConnectedWifi || haveConnectedMobile;
    }



    if (haveNetworkConnection(youractivityname.this)) {

     //do your work here ..
    }

您应该使用BroadcastReceiver获取活动中wifi连接的更新。下面是示例代码

 public class MainActivity extends Activity {

BroadcastReceiver receiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            // TODO Auto-generated method stub
            ConnectivityManager connectionManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
            NetworkInfo wifi = connectionManager.getNetworkInfo(ConnectivityManager.TYPE_WIFI);

            Toast.makeText(MainActivity.this, "Is Wifi connected : "+wifi.isConnected(), Toast.LENGTH_SHORT).show();


        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

    //  initViews();

        MainActivity.this.registerReceiver(receiver, new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
    }
}

还可以使用清单中的
ACCESS\u NETWORK\u STATE
权限在AndroidManifest.xml文件中写入
权限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>   
接下来要做的就是在您的条件下调用该方法。范例

if(notConnectedToWifi){
 // Oops! You're not connected to wifi!
}
注意,我检查
activeNetwork
是否通过
activeNetwork.isConnected()
连接,因此如果设备连接到移动网络,方法
notConnectedToWifi()
将返回false。如果未连接到任何网络,它也将返回false

在的帮助下,您将根据是否连接WIFI的跟踪信息获取网络信息

检查以下代码(传递活动上下文):


你不工作是什么意思?返回错误,不执行任何操作-什么?抱歉,它似乎根本没有检查wifi。无论是否有wifi连接,它都会在if语句中执行代码,就好像!它不起作用。我以为!可能不是此代码的正确语法
if(notConnectedToWifi){
 // Oops! You're not connected to wifi!
}
public boolean IsInternetConnected(Context context) {
    ConnectivityManager connectivity = (ConnectivityManager) context
            .getSystemService(Context.CONNECTIVITY_SERVICE);
    if (connectivity != null) {
        NetworkInfo nInfo = connectivity.getActiveNetworkInfo();
        if (nInfo != null) {
            //do your thing
            if (nInfo.getType() == ConnectivityManager.TYPE_WIFI) {
                // connected to wifi
                return true;
            } 

        }
        return false;

    }
    return false;
}