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>