2012-08-24 75 views
0

我只是想編寫一個簡單的Android應用程序,以編程方式顯示WiFi是啓用還是禁用。我無法獲得它打印Wifi狀態。我非常肯定我的代碼是99%正確的,但這並不比0%正確。如何在Android中以編程方式顯示WiFi狀態?

我的代碼如下。

package com.jasonhsu.wifitest; 

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.net.wifi.WifiManager; 
import android.os.Bundle; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    private LinearLayout ShowWifiStatus; 
    TextView TextWifiStatus; 

    @Override 
    public void onCreate (Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ShowWifiStatus = new LinearLayout (this); 
     TextView TextWifiStatus = new TextView (this); 
     TextWifiStatus.setText("Sorry, your Wifi status program isn't working."); 
     this.registerReceiver(this.WifiStateChangedReceiver, new IntentFilter(WifiManager.WIFI_STATE_CHANGED_ACTION)); 
     ShowWifiStatus.addView(TextWifiStatus); 
     setContentView(ShowWifiStatus); 
    } 

    private BroadcastReceiver WifiStateChangedReceiver 
    = new BroadcastReceiver(){ 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      // TODO Auto-generated method stub 

      int extraWifiState = intent.getIntExtra(WifiManager.EXTRA_WIFI_STATE , 
        WifiManager.WIFI_STATE_UNKNOWN); 

      switch(extraWifiState){ 
      case WifiManager.WIFI_STATE_DISABLED: 
       TextWifiStatus.setText("WIFI STATE DISABLED"); 
       break; 
      case WifiManager.WIFI_STATE_DISABLING: 
       TextWifiStatus.setText("WIFI STATE DISABLING"); 
       break; 
      case WifiManager.WIFI_STATE_ENABLED: 
       TextWifiStatus.setText("WIFI STATE ENABLED"); 
       break; 
      case WifiManager.WIFI_STATE_ENABLING: 
       TextWifiStatus.setText("WIFI STATE ENABLING"); 
       break; 
      case WifiManager.WIFI_STATE_UNKNOWN: 
       TextWifiStatus.setText("WIFI STATE UNKNOWN"); 
       break; 
      } 

     }}; 

} 

回答

2

從下面的語句刪除第一「的TextView」,讓你分配新的TextView對象的成員變量TextWifiStatus,而不是具有相同名稱的局部變量。

TextView TextWifiStatus = new TextView (this); 

問候

紫藤陳

+0

謝謝,紫藤!這確實有用。 (當然,這隻適用於真正的智能手機,不適用於AVD,當然這隻適用於智能手機。) – jhsu802701

相關問題