+4 Daumen
60 Aufrufe

lounge_app.png

1. Einführung

In diesem Artikel werden wir eine App in Android Studio entwickeln, die eine beliebige Webseite (in unserem Fall die Stacklounge) anzeigt. 

2. Implementierung

Bei der Implementierung gehen wir folgendermaßen vor:

0. Lege ein neues Android Studio Projekt mit dem Namen "Stacklounge" an.

1. Öffne die Datei activity_main.xml:

0.gif

2. Füge der App eine WebView hinzu. Dies ist ein Container, innerhalb dessen eine Webseite geladen und angezeigt werden kann. Das WebView-Objekt kann über die Suchleiste gefunden und per Drag-and-Drop hinzugefügt werden. Bereits vorhandene Objekte im Objekt ConstraintLayout (Hello World) werden nicht benötigt und können entfernt werden.

2.gif

In dem Feld id muss eine ID vergeben werden, durch die man das WebView-Objekt im Programmcode ansprechen kann. Wir verwenden an dieser Stelle den Namen portal

3. Wechsle in die Main-Activity

3.gif

In der Methode onCreate erzeugen wir ein WebView-Objekt, dem wir den in Schritt 2 erstellten WebView-Container zuweisen. Dies geschieht über die vergebene ID:

portal_view = (WebView) findViewById(R.id.portal);

Die Variable WebView portal_view wurde zuvor innerhalb der Klasse MainActivity als private Objektvariable definiert. Dieser WebView wird nun ein WebView-Client hinzugefügt:

portal_view.setWebViewClient(new WebViewClient());

Um JavaScript innerhalb der WebView zuzulassen, nehmen wir die folgende Einstellung an den WebView-Settings vor:

portal_view.getSettings().setJavaScriptEnabled(true);

Zum Schluss geben wir an, welche Webseite innerhalb der WebView geladen werden soll:

portal_view.loadUrl("https://www.stacklounge.de/");

Um per Back-Button auf dem Smartphone innerhalb der WebView eine Seite zurückzugehen, muss die von der Superklasse geerbte Methode onBackPressed überschrieben werden. 

    @Override
    public void onBackPressed() {
        if (portal_view.canGoBack()) {
            portal_view.goBack();
        } else {
            super.onBackPressed();
        }
    }

Die fertige MainActivity.java-Datei besitzt folgenden Inhalt:

package online.cyber_security.stacklounge;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends AppCompatActivity {

    private WebView portal_view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // Webview erzeugen.
        portal_view = (WebView) findViewById(R.id.portal);
        portal_view.setWebViewClient(new WebViewClient());
        portal_view.getSettings().setJavaScriptEnabled(true);

        // Referenz auf die Stacklounge.
        portal_view.loadUrl("https://www.stacklounge.de/");
    }

    @Override
    public void onBackPressed() {
        if (portal_view.canGoBack()) {
            portal_view.goBack();
        } else {
            super.onBackPressed();
        }
    }
}


4. In der Datei styles.xml, die im Verzeichnis res/values zu finden ist, kann die App optisch designed werden. Wir definieren exemplarisch:

    <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@android:color/holo_orange_dark</item>
        <item name="colorAccent">@color/colorAccent</item>
    </style>

Diese Vorgehensweise ist für alle Apps, in denen eine Webseite geladen werden soll, analog anwendbar.

Der Bau der App erfolgt über das Hammer-Icon:

hammer.png


Das Mitglied hat durch den Artikel 50 Bonuspunkte erhalten. Schreib auch du einen Artikel.
geschlossen: Stack-Artikel
Gefragt von 8,3 k

Ein anderes Problem?

Stell deine Frage

Ähnliche Fragen

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community
...