2010-07-06 55 views
0

我是Android開發新手,無法啓用/禁用WiFi &音頻服務。我使用getSystemService方法獲得適當的管理器實例。但是,當啓用WiFi使用時,我不會收到任何錯誤:在Android中啓用和禁用服務時遇到問題

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的)......我在想什麼?任何人都可以指出我這個代碼有什麼問題嗎?
在此先感謝您的建議和更正。

+0

什麼是LogCat顯示你?您可以通過'adb logcat',DDMS或Eclipse中的DDMS透視圖來訪問它。 – CommonsWare 2010-07-06 11:06:54

回答

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" /> 
相關問題