2010-02-23 1 views
62

Normalmente sto ricevendo la schermata delle impostazioni Wi-Fi sull'emulatore facendo clic su Settings > Wireless controls > wifi settings. Devo andare direttamente alla schermata delle impostazioni Wi-Fi dal mio programma quando preme il pulsante Wi-Fi che ho creato. Contatti, registro chiamate che possiamo gestire usando Intent.setData (android.provider.contacts ...........). C'è un modo per aprire le impostazioni sottomenu/menu da un programma Android?
Per favore, dammi consigli o esempi di codice su questo.Come posso chiamare la schermata delle impostazioni Wi-Fi dalla mia applicazione utilizzando Android

risposta

128

Vedere android.provider.Settings per una serie di azioni Intent che è possibile utilizzare per avviare varie schermate di impostazioni (ad esempio, ACTION_WIFI_SETTINGS).

MODIFICA: Aggiungere la riga di codifica.

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));

+26

per essere più precisi, android.app.activity.startActivity (nuova ** Android. content.Intent.Intent (android.provider.settings.Settings.ACTION_WIFI_SETTINGS)); ** o con * corretto * utilizzando *, ** startActivity (nuovo Intent (Settings.ACTION_WIFI_SETTINGS)); ** –

+1

pensi che "FLAG_ACTIVITY_NEW_TASK" sia [necessario] (http://stackoverflow.com/a/13385550/281545)? –

+1

@Mr_and_Mrs_D: Possibly. Posso vedere dove l'app Impostazioni potrebbe non gestire correttamente questi 'Intenti 'quando l'app Impostazioni è già in memoria, ma non ho provato questo scenario specifico. – CommonsWare

31

esempio

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

per aprire le impostazioni 3G e WIFI utilizzare questo: Settings.ACTION_WIRELESS_SETTINGS – MBH

9

Se si vuole fare dal file 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> 

Questo mostrerà una voce nelle impostazioni che chiamerà l'attività impostazioni della piattaforma

+0

Funziona per me utilizzando l'azione 'android.settings.WIFI_SETTINGS'. – Diego

22

Basta chiamare un intent con un contesto, provare questo:

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

Ecco il frammento di codice per aprire le impostazioni WiFi pagina

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

non ha funzionato in OI continua a ricevere "android.content.ActivityNotFoundException: impossibile trovare la classe di attività esplicita {com.android.settings/com.android.settings.WirelessSettings}; hai dichiarato questa attività nel tuo AndroidManifest.xml? " – JesseBoyd

+0

non funziona neanche per me. –