package cn.com.chenliang;import android.app.Activity;
import android.content.Context;
import android.net.wifi.WifiManager;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;public class CheckWifiActivity extends Activity {
Button btnCheck = null;
Button btnOpen = null;
Button btnClose = null;
TextView status = null;
WifiManager wifiManager = null; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnCheck = (Button) findViewById(R.id.btn_check);
btnOpen = (Button) findViewById(R.id.btn_open);
btnClose = (Button) findViewById(R.id.btn_close);
status = (TextView) findViewById(R.id.status); btnCheck.setOnClickListener(new Button.OnClickListener(){
  
  @Override 
  public void onClick(View arg0) { 
  int state = CheckWifi(CheckWifiActivity.this.getApplicationContext());
  System.out.println("fdsafdafdsafdsafdsaf"); if(state ==
  WifiManager.WIFI_STATE_DISABLED){//wifi网卡不可用
  status.setText("wifi网卡不可用"); }else if( state ==
  WifiManager.WIFI_STATE_DISABLING){ //wifi正在关闭
  status.setText("wifi正在关闭"); }else if( state ==
  WifiManager.WIFI_STATE_ENABLED){ //wifi网卡可用
  status.setText("wifi网卡可用"); }else if( state ==
  WifiManager.WIFI_STATE_ENABLING){ //wifi网卡正在打开
  status.setText("wifi网卡正在打开"); }else if( state ==
  WifiManager.WIFI_STATE_UNKNOWN){ //未知网卡状态
  status.setText("未知网卡状态"); }
  }
  }); 
btnOpen.setOnClickListener(new Button.OnClickListener(){
  @Override 
  public void onClick(View v) {
  OpenWifi(CheckWifiActivity.this.getApplicationContext()); }
  
  }); 
btnClose.setOnClickListener(new Button.OnClickListener(){
  @Override 
  public void onClick(View v) {
  CloseWifi(CheckWifiActivity.this.getApplicationContext()); }
  
  });
 
}
  public int CheckWifi(Context context){ 
  this.wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE); int
  mWifiState = wifiManager.getWifiState(); 
  return mWifiState; 
  } 
  public
  void OpenWifi(Context context){ 
  this.wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
  if(wifiManager.getWifiState() == wifiManager.WIFI_STATE_DISABLED) {
  wifiManager.setWifiEnabled(true); 
  }
  }
  public void CloseWifi(Context context){ 
  this.wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
  if(wifiManager.getWifiState() == wifiManager.WIFI_STATE_ENABLED) {
  wifiManager.setWifiEnabled(false); 
  }
  }
 
}这是必要的权限:
      <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    
     <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    
     <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  XML文件:
      <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView  
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="CheckWifi:"
    />
    <Button 
    android:id="@+id/btn_open"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="打开WIFI"
    />
    <Button 
    android:id="@+id/btn_close"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="关闭WIFI"
    />
    <Button 
    android:id="@+id/btn_check"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="检查wifi状态"
    />
    
    <TextView 
    android:id="@+id/status"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="wifi状态"
    />
</LinearLayout>
问题:每当我在真机上点检测wifi状态、打开wifi、关闭wifi按钮时程序都会死掉,求大神帮忙看下,哪里还有问题!    另外求检测3g和2g状态的代码,求帮忙啊 ! 

解决方案 »

  1.   

    我靠,原来是权限位置问题,我把权限的位置换了下就可以了,差点纠结了一天! 
    以前权限位置:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="cn.com.chenliang"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="10" />    <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".CheckWifiActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    
         <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    
         <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    
         <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>      </application>
    </manifest>改变权限位置后:
    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="cn.com.chenliang"
          android:versionCode="1"
          android:versionName="1.0">
        <uses-sdk android:minSdkVersion="10" />

     <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>    
         <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>    
         <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>    
         <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>  
        <application android:icon="@drawable/icon" android:label="@string/app_name">
            <activity android:name=".CheckWifiActivity"
                      android:label="@string/app_name">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>
            </activity>
        </application>
    </manifest>