在Android中启用和禁用服务时出现问题

时间:2010-07-06 09:26:53

标签: android

我是Android开发的新手,无法启用/禁用wifi&音频服务。我使用getSystemService方法获取适当的管理器实例。但是在使用以下方式启用wifi时我没有收到任何错误:

wifiMgr.setWifiEnabled(true);           

但是wifi根本没有打开!同样我使用

mAudio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
or
mAudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);

但手机没有进入静音模式!这是我的完整代码:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    try{            

    final ToggleButton bt = (ToggleButton)findViewById(R.id.bluetooth_button);
    final ToggleButton wf = (ToggleButton)findViewById(R.id.wifi_button);
    final ToggleButton sb = (ToggleButton)findViewById(R.id.sound_button);

    // Check Audio
    AudioManager mAudio = (AudioManager) getSystemService(Activity.AUDIO_SERVICE);
    soundStatus = mAudio.getRingerMode();
    if(soundStatus == AudioManager.RINGER_MODE_NORMAL)
        sb.setChecked(true);      

    // Check WiFi
    WifiManager wifiMgr =   (WifiManager) getSystemService(Context.WIFI_SERVICE);
    wifiStatus = wifiMgr.isWifiEnabled();
    if(wifiStatus)
        wf.setChecked(true);      

    sb.setOnClickListener(new OnClickListener() {           
        public void onClick(View v) {
            try {
                TextView tv = (TextView) findViewById(R.id.result); 
                AudioManager mAudio = (AudioManager) getSystemService(Activity.AUDIO_SERVICE);
                if(sb.isChecked()) {
                    mAudio.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                    tv.setText("Ringer set to Normal");
                } else {
                    mAudio.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                    tv.setText("Ringer set to Silent");
                }
            }catch (Exception e) {
                e.printStackTrace();
            }

        }
    });

    bt.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {

            try {
                TextView tv = (TextView) findViewById(R.id.result);             
                if(bt.isChecked())
                    tv.setText("Bluetooth is On!");
                else
                    tv.setText("Bluetooth is Off!");
            } catch (Exception e) {

                e.printStackTrace();
            }

        }
    });

    wf.setOnClickListener(new OnClickListener() {

        public void onClick(View v) {
            try {

                TextView tv = (TextView) findViewById(R.id.result);
                WifiManager wifiMgr =   (WifiManager) getSystemService(Context.WIFI_SERVICE);
                if(wf.isChecked()) {
                    wifiMgr.setWifiEnabled(true);                       
                    tv.setText("Wifi is On!");                      
                } else {
                    wifiMgr.setWifiEnabled(false);
                    tv.setText("Wifi is Off!");                     
                }
            } catch (Exception e) {

                e.printStackTrace();
            }

        }
    });

    }catch (Exception e) {
        e.printStackTrace();
    }
}

我添加了以下权限:

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

我正在使用摩托罗拉里程碑(android 2.1)..我错过了什么?任何人都可以指出我这个代码有什么问题吗? 提前感谢您的建议和更正。

1 个答案:

答案 0 :(得分:0)

通过添加更多权限解决了问题! 对于遇到相同问题的人,您还必须添加以下权限:

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

现在,除了这些,我需要音频和蓝牙访问。因为我必须补充:

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