2011-04-23 119 views

回答

6

權限是必需的。

我剛剛寫了這個應用程序,切換Wifi。

清單

<?xml version="1.0" encoding="utf-8"?> 
<manifest 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.stackoverflow.q5766518" 
    android:versionCode="1" 
    android:versionName="1.0"> 
    <uses-sdk 
     android:minSdkVersion="3" /> 

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

    <application 
     android:icon="@drawable/icon" 
     android:label="@string/app_name"> 
     <activity 
      android:name=".Main" 
      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>

佈局

<?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"> 
    <Button 
     android:id="@+id/my_button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Toggle Wifi" /> 
</LinearLayout>

主要活動

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

    final Button myButton = (Button) findViewById(R.id.my_button); 
    myButton.setOnClickListener(new View.OnClickListener() 
    { 
     @Override 
     public void onClick(View v) 
     { 
     final WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     wifi.setWifiEnabled(!wifi.isWifiEnabled()); 
     } 
    }); 
    }
1

WIFI_ON is a secure setting;只有由系統固件簽名的應用程序才能擁有適當的權限並使用SDK進行調整。


UPDATE

setWifiEnabled()可能支持這一點,因爲在評論中指出。我沒有看到需要權限的證據,但是如果有的話,你會得到一個堆棧跟蹤,指出需要什麼。我忘記了這條道路。

+3

WifiManager和所有切換Wifi開啓/關閉的應用程序小部件怎麼樣? http://developer.android.com/reference/android/net/wifi/WifiManager.html – 2011-04-23 20:30:10

+1

@Thane Anthem:啊,我的道歉。 'setWifiEnabled()'似乎支持這一點,並且對源代碼的快速掃描並不顯示任何需要許可的跡象(這是適度的干擾)。我會暫時更新我的​​答案。 – CommonsWare 2011-04-23 20:37:01

+0

權限確實似乎是必需的,因爲我在編寫我在此主題中其他位置發佈的應用程序時收到有關缺少三個權限的錯誤。 – 2011-04-23 21:23:32

0

是,其可能的。 wifimangr.setWifiEnabled(假);

創建Wifimanager..and的目的調用方法setWifiEnabled爲 「false」。 wifimangr。setWifiEnabled(假);

你需要CHANGE_WIFI_STATE許可待辦事項這一點。

相關問題