2011-04-23 2 views

Répondre

6

Des autorisations sont requises.

Je viens d'écrire cette application qui bascule Wifi.

Manifest

<?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>

mise en page

<?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>

Activité principale

@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; Seules les applications signées par le micrologiciel du système seront en mesure de détenir l'autorisation appropriée et de l'ajuster en utilisant le SDK.


MISE À JOUR

setWifiEnabled() soutient probablement cela, comme l'a souligné dans les commentaires. Je ne vois pas de preuve d'autorisation requise, mais s'il y en a une, vous obtiendrez une trace de pile qui devrait indiquer ce qui est nécessaire. Mes excuses pour avoir oublié ce chemin.

+3

Qu'en est-il de WifiManager et de tous les widgets d'applications qui activent/désactivent le Wifi? http://developer.android.com/reference/android/net/wifi/WifiManager.html –

+1

@Thane Anthem: Ah, mes excuses. 'setWifiEnabled()' semblerait supporter ceci, et une analyse rapide du code source ne montre aucun signe d'autorisation nécessaire (ce qui est modérément dérangeant). Je vais mettre à jour ma réponse momentanément. – CommonsWare

+0

Les autorisations semblent être nécessaires, car j'ai reçu des erreurs à propos de l'absence de trois autorisations lors de la rédaction de l'application que j'ai postée ailleurs dans ce fil de discussion. –

0

Oui, il est possible. wifimangr.setWifiEnabled (false);

Créer un objet de Wifimanager..and appeler la méthode setWifiEnabled à "false". wifimangr.setWifiEnabled (faux);

vous besoin de la permission CHANGE_WIFI_STATE todo cela.

Questions connexes