在“选项”菜单上切换Wifi的状态

时间:2012-01-04 04:52:18

标签: java android wifi android-optionsmenu

我想在Android的选项菜单中切换Wifi的状态。我想通过显示两个图标来扩展其功能,一个用于“开启”而另一个用于“关闭”。它的工作方式应该是当用户按下菜单键时:

  1. 他应该看到Wifi“开启”或“关闭”的当前状态
  2. 必须根据状态“on”或“off”
  3. 显示图标
  4. 当用户点击Wifi选项时,它应该切换Wifi的状态并相应地更改图标
  5. 这可以在选项菜单中进行吗?

    关于如何根据状态更改图标的任何想法?

    到目前为止,我可以通过将用户带到另一个活动来切换Wifi状态。但如果我能在选项菜单中实现它。它会使应用程序更容易使用。

    感谢您的投入和时间。

1 个答案:

答案 0 :(得分:1)

这是wifi开/关的代码:

 @Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case R.id.wifistate:
        final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
        if(wifi.isWifiEnabled()){
            wifi.setWifiEnabled(false);
            Drawable drawable = getResources().getDrawable(R.drawable.off);
            item.setIcon(drawable);
        }else{
            Drawable drawable = getResources().getDrawable(R.drawable.on);
            item.setIcon(drawable);
            wifi.setWifiEnabled(true);
        }
        break;

    }
    return true;

}

manifest.xml(添加权限)

<uses-permission
    android:name="android.permission.ACCESS_WIFI_STATE" />

menu.xml文件:

<?xml version="1.0" encoding="utf-8"?><menu xmlns:android="http://schemas.android.com/apk/res/android"><item android:id="@+id/wifistate"  android:title="Off" android:icon="@drawable/off"/></menu>