Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 - Fatal编程技术网

Java 等待android上的wifi连接

Java 等待android上的wifi连接,java,android,wifi,Java,Android,Wifi,我有一个小程序,试图连接到wifi网络。 它在设备上启用wifi,然后如果是第一次连接到特定网络,它将加载设备wifi,以便选择并添加连接密码。 直到我添加了密码,以便连接程序才应该完成。 我怎样才能添加一些东西来等待,直到我从连接的wifi管理器获取? 我尝试睡眠,但它冻结了应用程序,无法连接wifi弹出菜单? 还有其他方法吗?我在一个月前找到了解决您问题的方法,只需在其中使用Thread put方法isConnected()在本例中,我使用WifieExplorePractivity显示所有

我有一个小程序,试图连接到wifi网络。 它在设备上启用wifi,然后如果是第一次连接到特定网络,它将加载设备wifi,以便选择并添加连接密码。 直到我添加了密码,以便连接程序才应该完成。 我怎样才能添加一些东西来等待,直到我从连接的wifi管理器获取? 我尝试睡眠,但它冻结了应用程序,无法连接wifi弹出菜单?
还有其他方法吗?

我在一个月前找到了解决您问题的方法,只需在其中使用Thread put方法isConnected()
在本例中,我使用WifieExplorePractivity显示所有wifi网络,并允许用户连接到该网络

        Thread t = new Thread() {
        @Override
        public void run() {
            try {
                    //check if connected!
                while (!isConnected(WifiExplorerActivity.this)) {
                    //Wait to connect
                    Thread.sleep(1000);                     
                }

                Intent i = new Intent(WifiExplorerActivity.this, MainActivity.class);
                startActivity(i);

            } catch (Exception e) {
            }
        }
    };
    t.start();
此功能用于检查wifi是否已连接:

  public static boolean isConnected(Context context) {
    ConnectivityManager connectivityManager = (ConnectivityManager)
        context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo networkInfo = null;
    if (connectivityManager != null) {
        networkInfo = connectivityManager.getActiveNetworkInfo();
    }

    return networkInfo != null && networkInfo.getState() == NetworkInfo.State.CONNECTED;
}
最后,确保您的Androidmanifest.xml如下所示:

    <activity android:name=".WifiExplorerActivity" >        
    <intent-filter>
            <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
        </intent-filter>
</activity>

为什么需要清单中的
?(我从未使用过它,我不知道它是做什么的)我使用android.net.conn.CONNECTIVITY\u更改注册此活动的接收器,请参阅我认为如果设备使用移动数据连接,则
isConnected()
也将返回true。要检查WiFi,还应检查
networkInfo.getType()