等到在android上连接wifi

时间:2011-12-30 10:11:13

标签: java android wifi

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

1 个答案:

答案 0 :(得分:24)

我在一个月前找到了你的问题的解决方案,只需在其中使用Thread put方法isConnected()。
在这种情况下,我使用WifiExplorerActivity显示所有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>

此外,您可以使用ProgressDialog等待连接。见http://developer.android.com/guide/topics/ui/dialogs.html