2012-08-24 128 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

相关问题