So rufen Sie den Bildschirm mit den WLAN-Einstellungen in meiner Anwendung mit Android auf


77

Normalerweise erhalte ich einen Wi-Fi-Einstellungsbildschirm auf dem Emulator, indem ich auf das klicke Settings > Wireless controls > wifi settings. Ich muss von meinem Programm aus direkt zum Bildschirm mit den WLAN-Einstellungen wechseln, wenn ich auf die von mir erstellte WLAN-Schaltfläche drücke. Kontakte, Anrufprotokolle, die wir mithilfe von Intent.setData (android.provider.contacts ...........) bearbeiten können. Gibt es eine Möglichkeit, Untermenüs / Menüs für Einstellungen in einem Android-Programm zu öffnen?
Bitte geben Sie mir diesbezüglich Ratschläge oder Beispielcode.

Antworten:


165

Suchen Sie android.provider.Settingsnach einer Reihe von IntentAktionen, mit denen Sie verschiedene Einstellungsbildschirme starten können (z ACTION_WIFI_SETTINGS. B. ).

BEARBEITEN: Fügen Sie die Codierungszeile hinzu.

startActivity(new Intent(Settings.ACTION_WIFI_SETTINGS));


28
genauer gesagt, android.app.activity.startActivity (neuer android.content.Intent.Intent (android.provider.settings.Settings.ACTION_WIFI_SETTINGS)); oder mit der richtigen Verwendung von , startActivity (new Intent (Settings.ACTION_WIFI_SETTINGS));
Alex Cohn

2
denkst du FLAG_ACTIVITY_NEW_TASKist nötig ?
Mr_and_Mrs_D

1
@Mr_and_Mrs_D: Möglicherweise. Ich kann sehen, wo die Einstellungen-App diese möglicherweise nicht Intentsrichtig verarbeitet, wenn sich die Einstellungen-App bereits im Speicher befindet, aber ich habe dieses spezielle Szenario nicht ausprobiert.
CommonsWare

3
Verwenden Sie Folgendes, um allgemeine WLAN-Einstellungen zu öffnen: startActivity (new Intent (Settings.ACTION_WIRELESS_SETTINGS));
MBH

2
@ patrickjason91: "Wenn es möglich ist, dass der Intent-Aufruf der App eine Konfiguration steuern kann, wie die WLAN-Einstellungen oder ein anderer Einstellungsbildschirm im Allgemeinen angezeigt werden?" - Im Allgemeinen nicht und ohne Verwendung dokumentierter Extras.
CommonsWare

30

Beispiel

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

Um 3G- und WIFI-Einstellungen zu öffnen, verwenden Sie Folgendes: Settings.ACTION_WIRELESS_SETTINGS
MBH

27

Versuchen Sie Folgendes: Rufen Sie einfach eine Absicht mit einem Kontext auf:

startActivity(new Intent(WifiManager.ACTION_PICK_WIFI_NETWORK));

11

Wenn Sie es aus der XML-Datei tun möchten:

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

Daraufhin wird in Ihren Einstellungen ein Eintrag angezeigt, der die Einstellungsaktivität der Plattform aufruft


2
Es funktioniert bei mir mit android.settings.WIFI_SETTINGSAction.
Diego

1

Hier ist das Code-Snippet zum Öffnen der Seite mit den WLAN-Einstellungen

 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);

3
funktionierte nicht in OI immer wieder "android.content.ActivityNotFoundException: Explizite Aktivitätsklasse {com.android.settings / com.android.settings.WirelessSettings} konnte nicht gefunden werden; haben Sie diese Aktivität in Ihrer AndroidManifest.xml deklariert?"
JesseBoyd

1

Klicken Sie auf die Schaltfläche Klicken Sie auf Listner

startActivityForResult (neue Absicht (Settings.ACTION_WIFI_SETTINGS), 0);


1

Ich habe es so in meiner App implementiert:

     if (Connectivity.isConnected(this)) {
                SERVER_IP = Connectivity.getIPAddress(true)
            } else {
                SERVER_IP = "Not Connected to Network"
                Snackbar.make(appRoot, "Not Connected to Network", 
                              Snackbar.LENGTH_INDEFINITE)
                              .setAction("Open Settings") {
                   //open network settings
                  startActivity(Intent(Settings.ACTION_WIFI_SETTINGS))
                        }.show()
            }
        }


public static boolean isConnected(Context context) {
        NetworkInfo info = Connectivity.getNetworkInfo(context);
        return (info != null && info.isConnected());
    }

0

Wenn Sie mit Android 10 arbeiten und den Benutzer dazu bringen möchten, das WLAN einzuschalten, müssen Sie nicht mehr zum Bildschirm mit den WLAN-Einstellungen navigieren. Sie können das Einstellungsfenster verwenden

Eine API, mit der Apps Benutzern Einstellungen im Kontext ihrer App anzeigen können.

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.