WebView? Absoluter Beginner...

  • Antworten:16
Christopher Gerloff
  • Forum-Beiträge: 15

22.06.2010, 11:24:03 via Website

Guten Tag,

ich möchte eine App programmieren und habe leider noch nicht wirklich Ahnung von Android daher dieser Thread.

Meine App soll mehr oder weniger nur eine Webseite anzeigen, allerdings soll man die Webseite auch bedienen können, sprich auf ein paar Buttons drücken, soweit ich weiß würde also WebView dafür nicht funktionieren. Abgesehen von der Darstellung der Webseite, sollte es möglich sein über ein Menü einzustellen, in welchem Intervall die Webseite aktualisiert werden soll.

Kann mir jemand von euch sagen welche Klassen ich mir mal anschauen sollte bzw. noch weitere Tipps geben?

Viele Grüße

Antworten
Mac Systems
  • Forum-Beiträge: 1.727

22.06.2010, 12:51:41 via Website

Les ein Buch!

Windmate HD, See you @ IO 14 , Worked on Wundercar, Glass V3, LG G Watch, Moto 360, Android TV

ZoMtEc

Antworten
Christopher Gerloff
  • Forum-Beiträge: 15

22.06.2010, 15:07:31 via Website

Klasse Antwort... genau so hab ich mir das vorgestellt. Warum postet man in einem Forum? Ich tu es weil ich schnell eine Antwort will, das es noch andere Informationsquellen gibt ist mir durchaus bewusst. Danke.

Antworten
Kay J.
  • Forum-Beiträge: 59

22.06.2010, 17:04:36 via App

Christopher Gerloff
Klasse Antwort... genau so hab ich mir das vorgestellt. Warum postet man in einem Forum? Ich tu es weil ich schnell eine Antwort will, das es noch andere Informationsquellen gibt ist mir durchaus bewusst. Danke.

Naja, die antwort von mac war zwar nick ok, aber bei sowas machts sinn erstnal ausgiebig google zu befragen, da findest du sicher schneller was als über ein forum. ich kann dir derzeit leider nicht helfen da ich bis freitag kein pc zur hand hab :/

Antworten
Gelöschter Account
  • Forum-Beiträge: 573

22.06.2010, 18:07:12 via App

Mac Systems
Les ein Buch!
dein lieblingssatz mac. :grin:

Antworten
Martin
  • Forum-Beiträge: 4

22.06.2010, 18:11:26 via App

Aber Mac hat recht. Ließ ein Buch, schau bei google und in den Foren im Netz.

Antworten
Gelöschter Account
  • Forum-Beiträge: 460

22.06.2010, 18:43:10 via Website

HIER kannst du eine Vorlage finden vielleicht hilft sie dir

— geändert am 22.06.2010, 18:43:59

Grüße Alexander

Antworten
Tobias E.
  • Forum-Beiträge: 180

22.06.2010, 20:02:00 via Website

Christopher Gerloff
Klasse Antwort... genau so hab ich mir das vorgestellt. Warum postet man in einem Forum? Ich tu es weil ich schnell eine Antwort will, das es noch andere Informationsquellen gibt ist mir durchaus bewusst. Danke.

Naja, Deine Frage ist sehr allgemein und nicht gerade detailliert gestellt. Die kann man nicht beantworten ohne einen umfassenden Kurs in Android-App-Entwicklung zu verfassen. Das findest Du viel besser im Dev-Guide: http://developer.android.com/guide/index.html

Was genau meinst Du mit "man soll die Web-Seite bedienen können"?

Prinzipiell bist Du bei der WebView schon richtig. Das ist der Standard Weg Web-Inhalte innerhalb einer App anzuzeigen. Diese WebView kannst Du in ein LinearLayout einbauen. Das erlaubt es Dir dann auch Buttons hinzu zu fügen. Interessante Klassen sind: LinearLayout, Button und WebView.

Antworten
ZoMtEc
  • Forum-Beiträge: 80

22.06.2010, 20:15:04 via Website

Christopher G**loff
Hallo ich bin der Christopher und bin zu faul zu recherieren - aber warum soll ich das auch tun? Gibt doch genug hilfsbereite Idioten, die nichts besseres zutun haben als mir zu sagen, was genau ich tun muss oder es vllt sogar für mich erledigen!

Sorry, ich glaub so mag dir nicht wirklich wer helfen. Und auf diese Frage findest du genügend Antworten - bestimmt sogar hier im Forum!

...und wenn später doch mal ne ordentliche Frage kommt - gibts auch ne ordentliche Antwort :)

---

P.S. mein "Zitat" nicht in den falschen Hals bekommen ;)

— geändert am 22.06.2010, 22:41:48

Antworten
Christopher Gerloff
  • Forum-Beiträge: 15

22.06.2010, 20:50:09 via Website

Edit: Bin gerade etwas in Rage, werde erstmal nichts mehr schreiben.

— geändert am 22.06.2010, 20:51:41

Antworten
ZoMtEc
  • Forum-Beiträge: 80

22.06.2010, 22:40:55 via Website

Christopher Gerloff
Edit: Bin gerade etwas in Rage, werde erstmal nichts mehr schreiben.

Meine Worte waren vllt auch etwas überzogen :) Sollte doch nur verdeutlichen wie dein Text rüber
kommen kann ;) War nicht böse gemeint. Wie gesagt hier gibt es genug informationen zu dem thema
und wenn du damit nicht weiterkommen solltest wird dir sicher auch geholfen ;)

....und Alexander Rock hat die entsprechende Stelle in der Doku ja sogar auch schon verlinkt ;)

Trotzdem herzlich willkommen an board ^^

— geändert am 22.06.2010, 22:43:58

Antworten
Christopher Gerloff
  • Forum-Beiträge: 15

23.06.2010, 16:12:30 via Website

Guten Tag,

bin nun soweit, dass mir die Webseite angezeigt wird und ich sie über einen Button im Options Menü manuell refreshen kann. Als nächstes hätte ich gerne, dass ich durch einen Menüpunkt im Options Menü automatisches Aktualisieren der Webseite aktivieren kann. Habe das schon versucht un über Google recherchiert, funktioniert leider nicht. Gibt es etwas wichtiges zu beachten? Mache ich irgendeinen Fehler im Umgang mit Threads?

1public class AGTool extends Activity implements Runnable {
2 /** Called when the activity is first created. */
3 public WebView wv;
4 public Thread thread;
5 @Override
6 public void onCreate(Bundle savedInstanceState) {
7 super.onCreate(savedInstanceState);
8 wv = new WebView(this);
9 setContentView(wv);
10 wv.setWebViewClient(new AGTWebViewClient());
11 wv.loadUrl("http://www.google.de");
12
13 }
14
15 private class AGTWebViewClient extends WebViewClient {
16 @Override
17 public boolean shouldOverrideUrlLoading(WebView view, String url) {
18 view.loadUrl(url);
19 return true;
20 }
21 }
22
23 public boolean onCreateOptionsMenu(Menu menu) {
24 menu.add(0, 0, 0, "Refresh");
25 menu.add(0, 1, 1, "Quit");
26 return true;
27 }
28
29 /* Handles item selections */
30 public boolean onOptionsItemSelected(MenuItem item) {
31 switch (item.getItemId()) {
32 case 0:
33 thread = new Thread();
34 thread.start();
35
36 return true;
37 case 1:
38 wv.destroy();
39 return true;
40 }
41 return false;
42 }
43
44 public void run() {
45
46 try{
47 thread.sleep(100);
48 wv.reload();
49 //automatic reload
50 }
51 catch(InterruptedException e){
52 System.out.println(e);
53 }
54 }
55
56}

Vielen Dank für eure Antworten!

EDIT: Habs selber gelöst durch:
1thread = new Thread(this)
und
1while(true){
2thread.sleep(10000);
3wv.reload();
4}

— geändert am 23.06.2010, 16:19:57

Mac Systems

Antworten
Christopher Gerloff
  • Forum-Beiträge: 15

23.06.2010, 18:49:29 via Website

Mittlerweile habe ich 4 weitere Buttons im Options Menü eingefügt um das Intervall zwischen 2sec, 5sec, 10sec und 30sec zu verändern, wie kann ich es machen, dass ich das Intervall selber völlig Variabel ändern kann also quasi wenn ich den Button im Options Menü anklicke, dass ein neues Fenster aufgeht in dem ich einen Integer Wert festlegen kann (idealerweise begrenzt) und dieser dann in eine Variable gespeichert wird, muss ich das mit einer neuen Aktivität machen oder lässt sich das auch noch in der selben Aktivität lösen?

Grüße,
Christopher

Antworten
Carsten
  • Forum-Beiträge: 8

24.06.2010, 08:30:28 via Website

Hi,

du kannst das über einen Dialog machen - oder auch über eine PreferenceActivity. Beides hat Vorteile: den Dialog kannst Du über Deine Acitivty starten und verarbeiten, die PreferenceActivity würde sich dagegen anbieten, wenn Du mehrere Parameter (auch cross-session) speichern möchtest. Dazu erweiterst Du einfach die Klasse PreferenceActivity.


Gruß,
Carsten

Antworten
Christopher Gerloff
  • Forum-Beiträge: 15

24.06.2010, 18:20:09 via Website

Danke Carsten.

Und schon wieder habe ich ein neues Problem :D

DIe Webseite die ich aufrufe benötigt einen LogIn. Wenn man sich eingeloggt hat, wird einem ein Grundriss einer Wohnung angezeigt die mit sämtlicher Sensorik ausgestattet ist, so kann man über einen Klick auf das Lampen Symbol im Bad in der realen Wohnung das Licht anschalten und man sieht über Bewegungsmelder wo sich jemand in der Wohnung befindet.

Wenn ich nun automatisches Aktualisieren anschalte, und z.B. eine Lampe per Klick an mache, wird bei jedem reload() erneut dieser Button geklickt (vermutlich da die Aktion beim reload wieder mitgeschickt wird) und das Licht geht andauernd An und Aus.
Ich habe versucht statt reload() einfach wieder die Url zu laden mit loadUrl() allerdings unterstützt die Webseite keine Cookies, so dass ich mich immer wieder einloggen müsste.

Jemand eine Idee wie man das lösen könnte ohne an der Webseite selber Änderungen vorzunehmen?

Grüße,
Christopher

Antworten
Gelöschter Account
  • Forum-Beiträge: 5.136

24.06.2010, 18:39:37 via Website

Es liegt definitiv daran, dass die Seite die Du da reloadest, das Ergebnis eines HTTP Post-requests ist.

In so fern verhält sich Deine Webview absolut korrekt, weil sie diesen Umstand erkennt und dann richtigerweise die zuvor per Post übermittelten Dinge erneut übermittelt.

Um das zu umgehen müsstest Du definitiv die Webseite dahingehend umbauen, dass hier ein anderes Verhalten erfolgt.

Ich kenne zumindest keinen Trick das zu umgehen außer vielleicht folgendes:
Evtl. schaffst Du es ja, nach der kompletten übermittlung eines Post, im Code Deiner App die Ausgangsseite noch einmal komplett neu via Get zu laden. Dann und nur dann sehe ich eine Chance. Das schraubt aber natürlich das Downloadvolumen wieder in die Höhe.

Wenn Du die Serverseitige App beeinflussen kannst, würde ich allerdings eher dort ansetzen.

lg Voss

Antworten
Christopher Gerloff
  • Forum-Beiträge: 15

06.07.2010, 10:33:22 via Website

Hi, gleiches Thema andere Richtung. Muss/kann man bei einer WebView Cookies aktivieren oder werden diese automatisch benutzt falls von der Webseite gegeben oder vielleicht sogar garnicht benutzt?

Viele Grüße,
Christopher

Antworten