Android studio WebView und Java?
Hi, ich bin momentan dabei eine App zu bauen und darauf gestoßen das man mittels einer webView ziemlich einfach seine App in CSS HTML und JS Programmieren kann. Im Laufe meiner Planung ist mir allerdings aufgefallen das man so Recht schnell an die Grenzen des (für mich) machbaren stößt, kann ja auch sein daß ich schlichtweg zu doof bin. Jedenfalls wollte z.B. ein Login mit Database machen und automatisches anmelden wenn man die App neu startet. Java seitig finde ich dazu zig Videos, allerdings keine wirklichen die mir das mit Java Script erklären. Gibt es eine Möglichkeit wie ich von der webView aus mir dem Java Code kommunizieren kann? Als Beispiel: das ich ein Input Feld in HTML mache, einen Button und ein Label: der Button soll nach Klick den Wert des Input Feldes an den Java Code senden, und der soll dann das Label mittels Java Code, also außerhalb der webView in der Main Activity, den Wert des Labels gleich den Wert des Input Feldes setzen. Geht sowas überhaupt? Könnt ihr mir da weiterhelfen oder habt ihr gar gute Webseiten/ Videos wo diese Login Thematik mit Database erklärt wird?
1 Antwort
Du kannst dem WebView ein Interface zur Verfügung stellen, welches via JavaScript angesprochen wird. Über dieses lassen sich die Daten übermitteln.
In der Developer-Dokumentation wird dies unter diesem Abschnitt erklärt.
Die Formulardaten lassen sich auf Clientseite leicht zusammentragen. In folgendem Beispiel werden beispielsweise alle Formularfelder in einen JSON-String geschrieben, der sich in Java mit dem JSONObject gut parsen lassen würde.
<form id="form" method="post">
<label for="firstname-field">First name:</label>
<input id="firstname-field" name="firstname">
<label for="lastname-field">Last name:</label>
<input id="lastname-field" name="lastname">
<button>Send</button>
</form>
<script>
const form = document.getElementById("form");
form.addEventListener("submit", evt => {
evt.preventDefault();
const formData = new FormData(form);
const data = {};
formData.forEach((value, key) => data[key] = value);
const dataJson = JSON.stringify(data);
// do something with dataJson ...
});
</script>