2011-12-30 42 views
16

Tôi có một chương trình nhỏ cố gắng kết nối với mạng wifi. Nó cho phép các wifi trên thiết bị sau đó nếu nó là lần đầu tiên được kết nối với các mạng nhất định Nó tải wifi thiết bị để chọn và thêm mật khẩu để kết nối. Cho đến khi tôi thêm mật khẩu để kết nối chương trình không nên hoàn thành. Làm cách nào tôi có thể thêm nội dung nào đó để đợi cho đến khi tôi nhận được từ trình quản lý wifi được kết nối? Tôi thử ngủ nhưng nó đóng băng ứng dụng và không nhận được menu bật lên wifi để kết nối? có cách nào khác không?đợi cho đến khi kết nối wifi trên android

Trả lời

24

Tôi đã tìm thấy giải pháp cho vấn đề của bạn cách đây một tháng, chỉ cần sử dụng phương thức Đặt chủ đề được kết nối() trong đó.
Trong trường hợp này, tôi sử dụng WifiExplorerActivity để hiển thị tất cả mạng wifi và cho phép người dùng kết nối với mạng đó.

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

Và đây là chức năng để kiểm tra wifi đã kết nối hay không:

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

Cuối cùng, hãy chắc chắn AndroidManifest.xml của bạn trông như thế này:

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

Ngoài ra, bạn có thể sử dụng ProgressDialog để chờ kết nối. Xem http://developer.android.com/guide/topics/ui/dialogs.html

+0

cảm ơn rất nhiều. tôi sử dụng nó và nó hoạt động tuyệt vời – prokopis

+1

Tại sao bạn cần '' trong tệp kê khai? (Tôi chưa bao giờ sử dụng nó và tôi không hiểu nó làm gì) – MiniGod

+1

Tôi sử dụng android.net.conn.CONNECTIVITY_CHANGE để đăng ký Người nhận cho hoạt động này, xem http://stackoverflow.com/questions/8127324/connectivitymanager-android -net-conn-connect-change – R4j

Các vấn đề liên quan