问题描述
我正在尝试使用我的 android 应用程序更改 wi-fi 状态。我在清单文件中使用了 CHANGE_WIFI_STATE 和 ACCESS_WIFI_STATE 权限。
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
我已经使用以下代码来更改 wi-fi 状态。
public class MainActivity extends AppCompatActivity {
Button btn_wifi_on,btn_wifi_off;
WifiManager wifiManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_wifi_on = (Button) findViewById(R.id.btnTurnOn);
btn_wifi_off = (Button) findViewById(R.id.btnTurnOff);
btn_wifi_on.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
assert wifiManager != null;
wifiManager.setWifiEnabled(true);
Toast.makeText(MainActivity.this,"Wifi Turned on",Toast.LENGTH_SHORT).show();
}
});
btn_wifi_off.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
wifiManager = (WifiManager)getApplicationContext().getSystemService(Context.WIFI_SERVICE);
assert wifiManager != null;
wifiManager.setWifiEnabled(false);
Toast.makeText(MainActivity.this,"Wifi Turned off",Toast.LENGTH_SHORT).show();
}
});
}
}
当我点击按钮时,只出现 Toast 消息,但 wi-fi 状态没有改变。
谁能帮助我做错了什么?
解决方法
代码似乎没有任何问题,但这是一个用几行代码优化的方法
WifiManager wifiManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
}
public void startService(View v) {
if (wifiManager.isWifiEnabled()) {
wifiManager.setWifiEnabled(false);
Toast.makeText(this,"WiFi Disabled",Toast.LENGTH_LONG).show();
} else {
wifiManager.setWifiEnabled(true);
Toast.makeText(this,"WiFi Enabled",Toast.LENGTH_LONG).show();
}
}