2010-02-23 15 views
62

Normalmente recibo la pantalla de configuración de Wi-Fi en el emulador haciendo clic en Settings > Wireless controls > wifi settings. Necesito ir directamente a la pantalla de configuración de Wi-Fi desde mi programa al presionar el botón Wi-Fi que he creado. Contactos, registros de llamadas que podemos manejar usando Intent.setData (android.provider.contacts ...........). ¿Hay alguna manera de abrir los menús submenús/menú de configuración de un programa de Android?
Por favor dame consejo o muestra un código sobre esto.¿Cómo puedo llamar a la pantalla de configuración de Wi-Fi desde mi aplicación usando Android

Respuesta

128

Consulte android.provider.Settings para ver una serie de acciones de Intent que puede utilizar para abrir varias pantallas de configuración (p. Ej., ACTION_WIFI_SETTINGS).

EDITAR: Agregue la línea de codificación.

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));

+26

para ser más específicos, android.app.activity.startActivity (nueva ** androide. content.Intent.Intent (android.provider.settings.Settings.ACTION_WIFI_SETTINGS)); ** o con * uso *, * ** startActivity (new Intent (Setting.ACTION_WIFI_SETTINGS))); ** –

+1

¿Cree que se necesita [FLAG_ACTIVITY_NEW_TASK'] [http://stackoverflow.com/a/13385550/281545]? –

+1

@Mr_and_Mrs_D: Posiblemente. Puedo ver dónde la aplicación de Configuración podría no manejar estos "Intentos" correctamente cuando la aplicación de Configuración ya está en la memoria, pero no he probado este escenario específico. – CommonsWare

31

ejemplo

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

para abrir las configuraciones 3G y WIFI usa esto: Settings.ACTION_WIRELESS_SETTINGS – MBH

9

Si desea hacerlo desde el archivo 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> 

Esto mostrará un dato de la configuración que va a llamar a la actividad de la configuración de la plataforma

+0

Funciona para mí usando la acción 'android.settings.WIFI_SETTINGS'. – Diego

22

Solo tiene que llamar a un intento con un contexto, intente esto:

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

Aquí es el fragmento de código para abrir la configuración wifi página

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

no funcionó en OI sigue obteniendo "android.content.ActivityNotFoundException: no se puede encontrar la clase de actividad explícita {com.android.settings/com.android.settings.WirelessSettings}; ¿ha declarado esta actividad en su AndroidManifest.xml? " – JesseBoyd

+0

el suyo tampoco funciona para mí. –

Cuestiones relacionadas