首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

android检测wifi和3g状态失败,上面是代码,求大神帮忙看上

2012-12-14 
android检测wifi和3g状态失败,下面是代码,求大神帮忙看下!package cn.com.chenliangimport android.app.A

android检测wifi和3g状态失败,下面是代码,求大神帮忙看下!
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状态的代码,求帮忙啊 ! 
[解决办法]
我靠,原来是权限位置问题,我把权限的位置换了下就可以了,差点纠结了一天! 
以前权限位置:
<?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>  

热点排行