2 votes

Le WIFI peut-il être désactivé de manière programmée ?

Comment le wifi peut-il être désactivé/activé de manière programmatique et est-ce qu'une application rootée ou système est nécessaire pour cela.

6voto

A Child of God Points 279

Des autorisations sont nécessaires.

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

Manifeste

<?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());
      }
    });
  }

1voto

CommonsWare Points 402670

WIFI_ON est un cadre sécurisé ; seules les applications signées par le firmware du système pourront détenir la permission appropriée et l'ajuster en utilisant le SDK.


UPDATE

setWifiEnabled() va probablement dans ce sens, comme cela a été souligné dans les commentaires. Je ne vois pas de preuve qu'une permission soit nécessaire, mais s'il y en a une, vous obtiendrez un suivi de pile qui devrait vous indiquer ce qui est nécessaire. Je m'excuse d'avoir oublié ce chemin.

0voto

Jashan PJ Points 1587

Oui, c'est possible. wifimangr.setWifiEnabled(false) ;

Créez un objet de Wifimanager..et appelez la méthode setWifiEnabled à "false". wifimangr.setWifiEnabled(false) ;

vous avez besoin de la permission CHANGE_WIFI_STATE pour faire cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X