2010-02-23 7 views
62

Normalement, j'obtiens un écran de configuration Wi-Fi sur l'émulateur en cliquant sur le Settings > Wireless controls > wifi settings. Je dois aller directement à l'écran des paramètres Wi-Fi de mon programme en appuyant sur le bouton Wi-Fi que j'ai créé. Contacts, appelez les journaux que nous pouvons gérer en utilisant Intent.setData (android.provider.contacts ...........). Y at-il un moyen d'ouvrir les sous-menus/menus d'un programme Android?
Veuillez me donner un conseil ou un exemple de code à ce sujet.Comment puis-je appeler l'écran des paramètres Wi-Fi à partir de mon application à l'aide d'Android

Répondre

128

Examinez android.provider.Settings pour une série d'actions Intent que vous pouvez utiliser pour lancer divers écrans de paramètres (par exemple, ACTION_WIFI_SETTINGS).

EDIT: Ajoutez la ligne de codage.

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));

+26

pour être plus précis, android.app.activity.startActivity (nouveau ** android. content.Intent.Intent (android.provider.settings.Settings.ACTION_WIFI_SETTINGS)); ** ou avec une bonne * en utilisant *, ** startActivity (nouvelle intention (Settings.ACTION_WIFI_SETTINGS)); ** –

+1

pensez-vous que 'FLAG_ACTIVITY_NEW_TASK' est [nécessaire] (http://stackoverflow.com/a/13385550/281545)? –

+1

@Mr_and_Mrs_D: Eventuellement. Je peux voir où l'application Paramètres ne peut pas gérer ces 'Intents' correctement lorsque l'application Paramètres est déjà en mémoire, mais je n'ai pas essayé ce scénario spécifique. – CommonsWare

31

exemple

ConnectivityManager manager = (ConnectivityManager) 
     getSystemService(MainActivity.CONNECTIVITY_SERVICE); 
/* 
* 3G confirm 
*/ 
Boolean is3g = manager.getNetworkInfo(
     ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting(); 
/* 
* wifi confirm 
*/ 
Boolean isWifi = manager.getNetworkInfo(
     ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting(); 
if (is3g) { 
    textView.setText("3G"); 
} else if (isWifi) { 
    textView.setText("wifi"); 
} else { 
    textView.setText("nothing"); 
    // Activity transfer to wifi settings 
    startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS)); 
} 
+0

pour ouvrir les paramètres 3G et WIFI utilisez ceci: Settings.ACTION_WIRELESS_SETTINGS – MBH

9

Si vous voulez le faire à partir du fichier xml:

<PreferenceScreen 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:key="@string/setting_key" 
     android:summary="@string/setting_summary" 
     android:title="@string/setting_title" > 

     <intent 
      android:action="android.settings.WIRELESS_SETTINGS"/> 
    </PreferenceScreen> 

Cela montrera une entrée dans les paramètres qui appellera les paramètres de la plate-forme de l'activité

+0

Cela fonctionne pour moi en utilisant l'action 'android.settings.WIFI_SETTINGS'. – Diego

22

Il suffit d'appeler une intention avec un contexte, essayez ceci:

startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK)); 
0

Voici l'extrait de code pour ouvrir la page des paramètres wifi

Intent intent = new Intent(Intent.ACTION_MAIN, null); 
     intent.addCategory(Intent.CATEGORY_LAUNCHER); 
     ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings"); 
     intent.setComponent(cn); 
     intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     startActivity(intent); 
+1

n'a pas fonctionné dans OI continuer à obtenir "android.content.ActivityNotFoundException: Impossible de trouver la classe d'activité explicite {com.android.settings/com.android.settings.WirelessSettings}; avez-vous déclaré cette activité dans votre AndroidManifest.xml? " – JesseBoyd

+0

son ne fonctionne pas pour moi non plus. –