Fehler im Code?

  • Antworten:128
  • Bentwortet
Tim B.
  • Forum-Beiträge: 101

15.12.2013, 20:35:50 via Website

Kann mir bitte nochmal jemand helfen? Ich habe eben etwas geändert, aber dummerweise vergessen, was... :(
Alles, was fett und unterstrichen ist, wird von eclipse unterstrichelt.
Hier der Code der MainActivity.java:
1package com.timbremer.ggnauenvertretungsplan;
2
3import org.apache.http.util.EncodingUtils;
4
5import android.R;
6import android.R.layout;
7import android.annotation.SuppressLint;
8import android.app.Activity;
9import android.app.AlertDialog;
10import android.content.DialogInterface;
11import android.content.Intent;
12import android.os.Bundle;
13import android.view.Menu;
14import android.view.MenuInflater;
15import android.view.View;
16import android.view.View.OnClickListener;
17import android.webkit.CookieManager;
18import android.webkit.WebSettings.PluginState;
19import android.webkit.WebView;
20import android.webkit.WebViewClient;
21import android.widget.Button;
22import android.widget.EditText;
23
24
25public class MainActivity extends Activity {
26
27 private EditText etusername;
28 private EditText etpassword;
29 private Button btlogin;
30 private Button btfeedback;
31
32 @Override
33 public void onCreate(Bundle savedInstanceState) {
34 super.onCreate(savedInstanceState);
35 setContentView(R.layout.activity_main);
36
37 Button btlogin = (Button) findViewById(R.id.btlogin)
38
39 EditText etusername = (EditText) findViewById(R.id.etusername);
40
41 findViewById(R.id.btfeedback).setOnClickListener(new OnClickListener() {
42 @Override
43 public void onClick(View v) {
44 Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
45 String[] recipients = new String[]{"tbremer19@gmail.com", "",};
46 emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
47 emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Feedback zur Vertretungsplan App");
48 emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Fehler, Lob, Kritik oder Funktionswünsche:");
49 emailIntent.setType("text/plain");
50 startActivity(Intent.createChooser(emailIntent, "Sende Mail mit..."));
51 finish();
52 }
53 });
54
55
56
57 new AlertDialog.Builder(MainActivity.this)
58
59 .setTitle("BETA")
60
61 .setMessage("Die App befindet sich zurzeit noch in einer Beta-Testphase. Wenn du Fehler in meiner App findest, klick einfach auf den Feedback-Button.")
62
63 .setNeutralButton("Fenster Schließen",
64
65 new DialogInterface.OnClickListener() {
66
67 public void onClick(DialogInterface dialog,
68
69 int which) {
70
71 }
72
73 }).show();
74
75
76
77 //button
78
79 findViewById(R.id.btlogin).setOnClickListener( new View.OnClickListener() {
80
81
82 @SuppressLint("SetJavaScriptEnabled") @Override
83 public void onClick(View v) {
84
85 EditText etusername = (EditText) findViewById (R.id.etusername);
86 etusername.setText(etusername.getText().toString());
87 EditText etpassword = (EditText) findViewById (R.id.etpassword);
88 etpassword.setText(etpassword.getText().toString());
89
90 WebView wv = new WebView(MainActivity.this);
91 setContentView(wv);
92 wv.getSettings().setBuiltInZoomControls(true);
93 CookieManager.getInstance().setAcceptCookie(true);
94 wv.getSettings().setJavaScriptEnabled(true);
95 wv.getSettings().setLoadWithOverviewMode(true);
96 wv.getSettings().setUseWideViewPort(true);
97 wv.loadUrl("javascript: {" +
98 "document.getElementById('username').value = '"+etusername+"';" +
99 "document.getElementById('password').value = '"+etpassword+"';" +
100 "var frms = document.getElementsByName('login');" +
101 "frms[0].submit(); };");
102 wv.setWebViewClient(new WebViewClient() {
103 @Override
104 public boolean shouldOverrideUrlLoading(WebView view, String url) {
105 return false;
106 }
107 });
108
109
110 String url = "http://www.ggnauen.de/index.php";
111 String data = "username" + etusername + "&password" + etpassword;
112
113 wv.postUrl(url, EncodingUtils.getBytes(data, "base64"));
114
115
116
117 }
118
119
120 });
121
122
123
124 }
125
126
127
128
129
130
131
132
133
134
135
136
137 }

Und hier die activity_main.xml:
1<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
2 xmlns:tools="http://schemas.android.com/tools"
3 android:layout_width="match_parent"
4 android:layout_height="match_parent"
5 android:paddingBottom="@dimen/activity_vertical_margin"
6 android:paddingLeft="@dimen/activity_horizontal_margin"
7 android:paddingRight="@dimen/activity_horizontal_margin"
8 android:paddingTop="@dimen/activity_vertical_margin"
9 tools:context=".MainActivity"
10 >
11
12 <Button
13 android:id="@+id/btlogin"
14 android:layout_width="wrap_content"
15 android:layout_height="wrap_content"
16 android:layout_alignParentLeft="true"
17 android:layout_alignParentRight="true"
18 android:layout_below="@+id/etpassword"
19 android:layout_marginTop="19dp"
20 android:text="Anmelden" />
21
22 <TextView
23 android:id="@+id/textView1"
24 android:layout_width="wrap_content"
25 android:layout_height="wrap_content"
26 android:layout_alignLeft="@+id/etusername"
27 android:layout_alignParentTop="true"
28 android:text="Login"
29 android:textAppearance="?android:attr/textAppearanceLarge" />
30
31 <EditText
32 android:id="@+id/etusername"
33 android:layout_width="wrap_content"
34 android:layout_height="wrap_content"
35 android:layout_alignLeft="@+id/etpassword"
36 android:layout_alignParentRight="true"
37 android:layout_below="@+id/textView1"
38 android:layout_marginTop="16dp"
39 android:ems="10"
40 android:hint="Benutzername" >
41
42 <requestFocus />
43 </EditText>
44
45 <EditText
46 android:id="@+id/etpassword"
47 android:layout_width="wrap_content"
48 android:layout_height="wrap_content"
49 android:layout_alignLeft="@+id/btlogin"
50 android:layout_alignParentRight="true"
51 android:layout_below="@+id/etusername"
52 android:ems="10"
53 android:hint="Passwort" />
54
55 <Button
56 android:id="@+id/btfeedback"
57 android:layout_width="wrap_content"
58 android:layout_height="wrap_content"
59 android:layout_alignParentBottom="true"
60 android:layout_alignParentLeft="true"
61 android:layout_alignRight="@+id/btlogin"
62 android:text="Feedback" />
63
64
65
66</RelativeLayout>
Ich bekomme immer einen Fehler: "...cannot be resolved or is not a field"
Danke, tbremer19

— geändert am 15.12.2013, 20:37:31

LG Optimus Me mit Root

Antworten
impjor
  • Forum-Beiträge: 1.793

15.12.2013, 21:26:34 via App

Lösche bitte android.R und android.R.layout aus deinen imports.
Ggf. auch einmal das Project cleanen (in eclipse Project > Clean).

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Estoy
  • Forum-Beiträge: 2.150

15.12.2013, 21:28:49 via App

OT:
Kann man sich schon als beta tester anmelden? ^^

— geändert am 15.12.2013, 21:28:59

Antworten
Tim B.
  • Forum-Beiträge: 101

15.12.2013, 21:30:22 via Website

Sgt G.
OT:
Kann man sich schon als beta tester anmelden? ^^
Jap

LG Optimus Me mit Root

Antworten
Tim B.
  • Forum-Beiträge: 101

15.12.2013, 21:31:04 via Website

impjor
Lösche bitte android.R und android.R.layout aus deinen imports.
Ggf. auch einmal das Project cleanen (in eclipse Project > Clean).

LG
Wie dämlich... da hätte ich auch selbst drauf kommen können. Die imports waren bei mir nicht komplett eingeblendet. Danke!

LG Optimus Me mit Root

Antworten
Estoy
  • Forum-Beiträge: 2.150

15.12.2013, 21:33:42 via App

Tim B.
Sgt G.
OT:
Kann man sich schon als beta tester anmelden? ^^
Jap
Wo? ^^

Antworten
Estoy
  • Forum-Beiträge: 2.150

15.12.2013, 22:13:03 via App

Antrag gestellt!

Antworten
Tim B.
  • Forum-Beiträge: 101

16.12.2013, 16:41:01 via Website

Ach Mensch Leute... meine App startet schon wieder nicht. Hab nur den package name geändert... Hier das Logcat:

EDIT: hab den Fehler schon wieder gefunden... in der AndroidManifest.xml habe ich nur das obere feld geändert

— geändert am 16.12.2013, 16:49:15

LG Optimus Me mit Root

Antworten
Tim B.
  • Forum-Beiträge: 101

16.12.2013, 20:04:02 via Website

Jetzt wird schon wieder das R unsterstrichen... Hab schon so viele gegoogled aber nichts gefunden. Die R.java ist bei mir im gen Ordner nicht vorhanden.

1package com.timbremer.vertretungsplanggnauen;
2
3import org.apache.http.util.EncodingUtils;
4
5import android.annotation.SuppressLint;
6import android.app.Activity;
7import android.app.AlertDialog;
8import android.content.DialogInterface;
9import android.content.Intent;
10import android.os.Bundle;
11import android.support.v4.widget.DrawerLayout;
12import android.view.Menu;
13import android.view.MenuInflater;
14import android.view.View;
15import android.view.View.OnClickListener;
16import android.webkit.CookieManager;
17import android.webkit.WebSettings.PluginState;
18import android.webkit.WebView;
19import android.webkit.WebViewClient;
20import android.widget.Button;
21import android.widget.EditText;
22
23
24public class MainActivity extends Activity {
25
26 private EditText etusername;
27 private EditText etpassword;
28 private Button btlogin;
29 private Button btfeedback;
30
31
32 @Override
33 public void onCreate(Bundle savedInstanceState) {
34 super.onCreate(savedInstanceState);
35 setContentView(R.layout.activity_main);
36
37 Button btlogin = (Button) findViewById(R.id.btlogin);
38
39 EditText etusername = (EditText) findViewById(R.id.etusername);
40
41 findViewById(R.id.btfeedback).setOnClickListener(new OnClickListener() {
42 @Override
43 public void onClick(View v) {
44 Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
45 String[] recipients = new String[]{"tbremer19@gmail.com", "",};
46 emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
47 emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Feedback zur Vertretungsplan App");
48 emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Fehler, Lob, Klritik oder Funktionswünsche:");
49 emailIntent.setType("text/plain");
50 startActivity(Intent.createChooser(emailIntent, "Sende Mail mit..."));
51 finish();
52 }
53 });
54
55
56
57 new AlertDialog.Builder(MainActivity.this)
58
59 .setTitle("BETA")
60
61 .setMessage("Die App befindet sich zurzeit noch in einer Beta-Testphase. Wenn du Fehler in meiner App findest, klick einfach auf den Feedback-Button.")
62
63 .setNeutralButton("Fenster Schließen",
64
65 new DialogInterface.OnClickListener() {
66
67 public void onClick(DialogInterface dialog,
68
69 int which) {
70
71 }
72
73 }).show();
74
75
76
77 //button
78
79 findViewById(R.id.btlogin).setOnClickListener( new View.OnClickListener() {
80
81
82 @SuppressLint("SetJavaScriptEnabled") @Override
83 public void onClick(View v) {
84
85 EditText etusername = (EditText) findViewById (R.id.etusername);
86 etusername.setText(etusername.getText().toString());
87 EditText etpassword = (EditText) findViewById (R.id.etpassword);
88 etpassword.setText(etpassword.getText().toString());
89
90 WebView wv = new WebView(MainActivity.this);
91 setContentView(wv);
92 wv.getSettings().setBuiltInZoomControls(true);
93 CookieManager.getInstance().setAcceptCookie(true);
94 wv.getSettings().setJavaScriptEnabled(true);
95 wv.getSettings().setLoadWithOverviewMode(true);
96 wv.getSettings().setUseWideViewPort(true);
97 wv.loadUrl("javascript: {" +
98 "document.getElementById('username').value = '"+etusername +"';" +
99 "document.getElementById('password').value = '"+etpassword+"';" +
100 "var frms = document.getElementsByName('loginForm');" +
101 "frms[0].submit(); };");
102 wv.setWebViewClient(new WebViewClient() {
103 @Override
104 public boolean shouldOverrideUrlLoading(WebView view, String url) {
105 return false;
106 }
107 });
108
109
110 String url = "http://www.ggnauen.de/index.php";
111 String data = "username" +etusername+ "&password" + etpassword;
112
113 wv.postUrl(url, EncodingUtils.getBytes(data, "base64"));
114
115
116
117 }
118
119
120 });
121
122
123
124 }
125
126
127
128
129
130
131
132
133
134
135
136
137
138 }

LG Optimus Me mit Root

Antworten
Michele
  • Forum-Beiträge: 1.525

16.12.2013, 22:15:21 via Website

Hallo.

Wurde dir schon mal gesagt, was zutun ist bei so welchen Fehlern.




LG

— geändert am 16.12.2013, 22:16:06

Antworten
Tim B.
  • Forum-Beiträge: 101

16.12.2013, 22:17:08 via Website

Diesmal war es schon wieder etwas anderes. Ich hatte einen Schreibfehler.

LG Optimus Me mit Root

Antworten
Michele
  • Forum-Beiträge: 1.525

16.12.2013, 22:19:32 via Website

Tim B.
Diesmal war es schon wieder etwas anderes. Ich hatte einen Schreibfehler.

Siehst du, so schnell findest du immer wieder deine eigene Fehlern.

Wozu fragst du dann hier nach, anstatt einfach mal bisschen mehr Zeit zu nutzen und
alles in ruhe zu überprüfen?


LG

— geändert am 16.12.2013, 22:20:51

Antworten
Tim B.
  • Forum-Beiträge: 101

16.12.2013, 22:21:17 via Website

Ich frage immer, wenn ich kurz vor dem Verzweifeln bin und dann finde ich die Fehler doch noch.

LG Optimus Me mit Root

Antworten
Michele
  • Forum-Beiträge: 1.525

16.12.2013, 22:22:40 via Website

Tim B.
Ich frage immer, wenn ich kurz vor dem Verzweifeln bin und dann finde ich die Fehler doch noch.

Ja einfache Fehler die dir Eclipse eigentlich genau sagt.

Wenn du so schnell Verzweifelst, dann solltest du mal das Programmieren lassen :D.
Denn bei Spiele Programmieren, wird dir noch der Kopf zerbrechen.


LG

Antworten
Tim B.
  • Forum-Beiträge: 101

18.12.2013, 20:09:00 via Website

Die Mods könnten das hier ja zu einem Sammelthread machen :grin:

Meine App ist jedenfalls fertig, alles funktioniert prima, außer natürlich der Login...

1findViewById(R.id.btlogin).setOnClickListener( new View.OnClickListener() {
2
3
4 @Override
5 public void onClick(View v) {
6
7 EditText username = (EditText) findViewById (R.id.etusername);
8 username.setText(username.getText().toString());
9 EditText password = (EditText) findViewById (R.id.etpassword);
10 password.setText(password.getText().toString());
11
12 WebView wv = new WebView(MainActivity.this);
13 setContentView(wv);
14 wv.getSettings().setBuiltInZoomControls(true);
15 CookieManager.getInstance().setAcceptCookie(true);
16 wv.getSettings().setJavaScriptEnabled(true);
17 wv.getSettings().setLoadWithOverviewMode(true);
18 wv.getSettings().setUseWideViewPort(true);
19 wv.loadUrl("javascript: {" +
20 "document.getElementById('mod_login_username').value = '"+username +"';" +
21 "document.getElementById('mod_login_password').value = '"+password+"';" +
22 "var frms = document.getElementsByName('login');"+
23 "frms[0].submit(); };");
24 wv.setWebViewClient(new WebViewClient() {
25 @Override
26 public boolean shouldOverrideUrlLoading(WebView view, String url) {
27 return false;
28 }
29 });

Kann mir jemand sagen, was ich schon wieder falsch mache? Hier auch nochmal der Link zu der Seite, auf der ich mich einloggen möchte: ggnauen.de

Danke für eure tolle Unterstützung!

LG Optimus Me mit Root

Antworten
Michele
  • Forum-Beiträge: 1.525

18.12.2013, 20:16:37 via Website

Was sagt deine LogCat dazu?



LG

Antworten
Tim B.
  • Forum-Beiträge: 101

18.12.2013, 20:19:34 via Website

Michele
Was sagt deine LogCat dazu?



LG

12-18 20:02:38.060: I/chromium(21246): [INFO:CONSOLE(343)] "Uncaught ReferenceError: _gat is not defined", source: http://www.ggnauen.de/index.php (343)
12-18 20:04:34.630: I/chromium(22072): [INFO:CONSOLE(343)] "Uncaught ReferenceError: _gat is not defined", source: http://www.ggnauen.de/index.php (343)
12-18 20:16:31.695: I/chromium(26190): [INFO:CONSOLE(343)] "Uncaught ReferenceError: _gat is not defined", source: http://www.ggnauen.de/ (343)


Das ist das einzige, was mit der webview oder der homepage zutun hat

Hier ist mal der Quellcode des loginforms:
1<table cellpadding="0" cellspacing="0" class="moduletable_login">
2 <tr>
3 <th valign="top">
4 Login Form </th>
5 </tr>
6 <tr>
7 <td>
8 <form action="http://www.ggnauen.de/index.php" method="post" name="login" >
9
10 <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center">
11 <tr>
12 <td>
13 <label for="mod_login_username">
14 Benutzername </label>
15 <br />
16 <input name="username" id="mod_login_username" type="text" class="inputbox" alt="username" size="10" />
17 <br />
18 <label for="mod_login_password">
19 Passwort </label>
20 <br />
21 <input type="password" id="mod_login_password" name="passwd" class="inputbox" size="10" alt="password" />
22 <br />
23 <input type="checkbox" name="remember" id="mod_login_remember" class="inputbox" value="yes" alt="Remember Me" />
24 <label for="mod_login_remember">
25 Angemeldet bleiben </label>
26 <br />
27 <input type="submit" name="Submit" class="button" value="Anmelden" />
28 </td>
29 </tr>
30 <tr>
31 <td>
32 <a href="http://www.ggnauen.de/index.php?option=com_registration&amp;task=lostPassword">
33 Passwort vergessen?</a>
34 </td>
35 </tr>
36 </table>

— geändert am 18.12.2013, 20:21:40

LG Optimus Me mit Root

Antworten
impjor
  • Forum-Beiträge: 1.793

18.12.2013, 21:16:24 via App

Was funktioniert an deinem Login nicht?
Stürzt die App ab, passiert nichts, kann man sich nicht einloggen... Bitte lass dir nicht alles aus der Nase ziehen.

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Tim B.
  • Forum-Beiträge: 101

18.12.2013, 21:18:23 via Website

Achso, hab ich ganz vergessen: Ich klicke den button, webview öffnet sich aber ich bin nicht angemeldet.

LG Optimus Me mit Root

Antworten
impjor
  • Forum-Beiträge: 1.793

18.12.2013, 21:23:36 via App

Was kommt stattdessen? Falscher Benutzername/Passwort? Was passiert, wenn du dich in diesem WebView manuell anmeldest? Sind die Felder leer oder wurde die form nur nicht abgesendet?

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Tim B.
  • Forum-Beiträge: 101

18.12.2013, 21:24:22 via Website

Wenn ich den Button klicke, komme ich auf die startseite. Die Felder im login form sind leer aber ich kann mich normal anmelden.

LG Optimus Me mit Root

Antworten
impjor
  • Forum-Beiträge: 1.793

18.12.2013, 21:34:54 via App

Teste mal, ob dein JavaScript-Code ausgeführt wird (am Ende z.B. alert() ergänzen).
Desweiteren mal prüfen, welche Cookies der Manager enthält.

***Edit***
Wo lädst du überhaupt die Webseite??

LG

— geändert am 18.12.2013, 21:35:49

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

18.12.2013, 21:39:06 via App

Wieso machst dus dir mit dem Login so unständlich?
Ein Http Post auf die php seite würde reichen.
Da brauchst du nicht erst die Benutzerdaten mit javascript einfügen.
1String postData = "benutzer=ab&passwort=pwa123";
2 webView.postUrl(url, EncodingUtils.getBytes(postData, "base64"));

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
impjor
  • Forum-Beiträge: 1.793

18.12.2013, 21:45:55 via App

@Pascal P.: Da muss man ganz schön aufpassen: Viele Server prüfen zu dem das Vorhanden sein z.B. des submit-Buttons o.ä. Denn muss man dann auch noch angeben, aber prinzipiell möglich. Ob einfacher, sei jedem selbst überlassen.

Frage mich aber immernoch, wo das WebView bei ihm die URL herhohlt...

LG

— geändert am 18.12.2013, 21:47:07

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

19.12.2013, 04:01:54 via App

Er hat das bestimmt im Code irgendwo sonst könnte LogCat die Url garnicht anzeigen

— geändert am 19.12.2013, 04:02:19

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 07:42:04 via App

Jap, ist weiter unten, kann ich aber auch ändern, wenn das besser ist.

LG Optimus Me mit Root

Antworten
Christian
  • Forum-Beiträge: 307

19.12.2013, 10:38:41 via App

Hi,

1EditText username = (EditText) findViewById (R.id.etusername);
2
3username.setText(username.getText().toString());
4
5EditText password = (EditText) findViewById (R.id.etpassword);
6
7password.setText(password.getText().toString());

Gibt es eigentlich für diesen Code einen sinnvollen Grund?

Des weiteren über gibst du der WebView als "password" und "username" die beiden EditText username und password.. Soll das so sein?

MFG Christian

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 14:47:14 via App

Christian Hempe
Hi,

1EditText username = (EditText) findViewById (R.id.etusername);
2
3username.setText(username.getText().toString());
4
5EditText password = (EditText) findViewById (R.id.etpassword);
6
7password.setText(password.getText().toString());

Gibt es eigentlich für diesen Code einen sinnvollen Grund?

Des weiteren über gibst du der WebView als "password" und "username" die beiden EditText username und password.. Soll das so sein?

MFG Christian

Die App ist zum Anzeigen eines Vertrutungsplanes gedacht. Da die Website passwortgeschützt ist, soll sich der User nur einmal am Anfang anmelden müssen. Der eingegebene Text (BN und PW) sollen dann in den shared preferences gespeichert werden.

LG Optimus Me mit Root

Antworten
impjor
  • Forum-Beiträge: 1.793

19.12.2013, 15:08:41 via App

Christian Hempe hat schon recht: Du ließt den Text des EditTextes aus, nur um ihn im selben zu setzen?
Von SharedPreferences steht auch keine Zeile.
Zu dem hat er doch dein Problem erkannt: Du setzt in der Webseite nicht den Text im EditText: Dir fehlt da ein getText().

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 15:16:21 via App

impjor
Christian Hempe hat schon recht: Du ließt den Text des EditTextes aus, nur um ihn im selben zu setzen?
Von SharedPreferences steht auch keine Zeile.
Zu dem hat er doch dein Problem erkannt: Du setzt in der Webseite nicht den Text im EditText: Dir fehlt da ein getText().

LG
Vielen Dank, das mit den shared prefs baue ich noch ein. Hab ich nur vorerst rausgenommen.
Allerdings stehe ich gerade auf dem Schlauch... wo soll denn das getText() hin?

— geändert am 19.12.2013, 15:23:57

LG Optimus Me mit Root

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 15:34:04 via Website

Ich habe mal versucht mich in deinen Code einzuarbeiten und stoße auf ein paar Probleme.
(Alles unter der Annahme dass der Code vom 15.12. noch aktuell ist.)

1. Du initialisiert in Zeile 27 die das EditText-Objekt "etusername". In der Methode onClick des Loginbuttons machst du das gleiche nochmal:
1EditText etusername = (EditText) findViewById (R.id.etusername);

Der tiefere Sinn dessen hat sich mir noch nicht erschlossen, ich würde alle EditText Objekte im Rumpf der Klasse/Activity deklarieren und in der OnCreate Methode initialisieren. So schützt du dich vor Verwechslungen und Chaos.

2. Vermutlich der Fehler/Ziemlich sicher aber zumindest ein Fehler in der von dir überschriebenen OnClick Methode des LoginButtons:
Du initialisierst ein neues EditTextObjekt username mit dem passendem view und setzt dann den Text dieses Objekts auf den Text... eben dieses Objekts ^^ Die Zeile
1username.setText(username.getText().toString());
ergibt für mich absolut keinen Sinn. Und weiterhin arbeitest du dann auch mit dem Objekt EditText im WebView. Du konkatenierst für loadURL einen String zusammen und packst dort ein Objekt EditText rein. Dies ist aber kein String sondern eine Instanz des Eingabefelds.
Du müsstest vorher einen String deklarieren und dort den Text aus dem EditText reinpacken.
In etwa so stelle ich mir das vor:

1EditText viewUsername = (EditText) findViewById (R.id.etusername);
2 String username = viewUsername.getText().toString();

Und dann arbeitest du mit dem String username. Probier das mal bitte aus.

— geändert am 19.12.2013, 15:36:10

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 15:44:59 via Website

Ich hab das ganze jetzt mal so abgeändert aber leider bin ich immernoch nicht angemeldet, wenn ich den Button klicke.
1@Override
2 public void onClick(View v) {
3
4 EditText viewUsername = (EditText) findViewById (R.id.etusername);
5 String username = viewUsername.getText().toString();
6
7 EditText viewPassword = (EditText) findViewById (R.id.etusername);
8 String password = viewPassword.getText().toString();
9
10 WebView wv = new WebView(MainActivity.this);
11 setContentView(wv);
12 wv.getSettings().setBuiltInZoomControls(true);
13 CookieManager.getInstance().setAcceptCookie(true);
14 wv.getSettings().setJavaScriptEnabled(true);
15 wv.getSettings().setLoadWithOverviewMode(true);
16 wv.getSettings().setUseWideViewPort(true);
17 wv.loadUrl("javascript: {" +
18 "document.getElementById('username').value = '+username';" +
19 "document.getElementById('password').value = '+password';" +
20 "var frms = document.getElementsByName('login');"+
21 "frms[0].submit(); };");
22 wv.setWebViewClient(new WebViewClient() {
23 @Override
24 public boolean shouldOverrideUrlLoading(WebView view, String url) {
25 return false;
26 }
27 });
28
29
30 String url = "http://www.ggnauen.de";
31 String data = "username" +username+ "&password" + password;
32
33 wv.postUrl(url, EncodingUtils.getBytes(data, "base64"));
34
35
36
37 }
38
39 });

— geändert am 19.12.2013, 15:48:56

LG Optimus Me mit Root

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 15:49:49 via Website

Schau mal hier ;)
1String password = etusername.getText().toString();
Klassischer CopyPaste Fehler.
Falls das Problem besteht, schau mal bitte ob sich der Fehler im Logcat geändert hat.

//Edit: Ah du hast deinen Code schon bearbeitet ^^

— geändert am 19.12.2013, 15:50:58

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 15:55:25 via Website

Mh, die Stelle wo du den String zusammenbaust, hast du gefühlt auch verschlimmbessert:

Vorher:
1"document.getElementById('username').value = '"+etusername+"';" +

Nachher:
1... "document.getElementById('username').value = '+username';" +...

Das username steckt jetzt im String drin. Sortier dort die Anführungszeichen nochmal richtig :)

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 15:58:58 via Website

Das heißt, der Code wäre so eigentlich korrekt? Die Anmeldung funktioniert leider immer noch nicht...
Ihr könnt euch das LoginForm ja mal auf der Website anschauen: http://ggnauen.de

LG Optimus Me mit Root

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 16:00:45 via Website

Nein, wie gesagt, deine Stringzusammensetzung ist noch sehr daneben.
Und bitte nach jeder Änderung am Code den aktuellen! Fehler im Logcat mitgeben. :)

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 16:11:15 via Website

Hier ist meine gesamte LogCat:
112-19 16:10:14.290: D/libEGL(28260): loaded /system/lib/egl/libEGL_mali.so
212-19 16:10:14.290: D/libEGL(28260): loaded /system/lib/egl/libGLESv1_CM_mali.so
312-19 16:10:14.295: D/libEGL(28260): loaded /system/lib/egl/libGLESv2_mali.so
412-19 16:10:14.300: E/(28260): Device driver API match
512-19 16:10:14.300: E/(28260): Device driver API version: 23
612-19 16:10:14.300: E/(28260): User space API version: 23
712-19 16:10:14.300: E/(28260): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Wed Oct 9 21:05:57 KST 2013
812-19 16:10:14.330: D/OpenGLRenderer(28260): Enabling debug mode 0
912-19 16:10:26.780: V/WebViewChromium(28260): Binding Chromium to the background looper Looper (main, tid 1) {41e085c0}
1012-19 16:10:26.780: I/chromium(28260): [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
1112-19 16:10:26.785: I/BrowserProcessMain(28260): Initializing chromium process, renderers=0
1212-19 16:10:26.815: W/chromium(28260): [WARNING:proxy_service.cc(888)] PAC support disabled because there is no system implementation
1312-19 16:10:26.860: W/AwContents(28260): nativeOnDraw failed; clearing to background color.
1412-19 16:10:26.960: I/chromium(28260): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: (1)
1512-19 16:10:26.965: I/chromium(28260): [INFO:simple_index_file.cc(397)] Simple Cache Index is being restored from disk.
1612-19 16:10:26.990: I/chromium(28260): [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
1712-19 16:10:27.005: I/chromium(28260): [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
1812-19 16:10:27.530: I/chromium(28260): [INFO:CONSOLE(343)] "Uncaught ReferenceError: _gat is not defined", source: http://ggnauen.de/ (343)
1912-19 16:10:31.370: W/IInputConnectionWrapper(28260): showStatusIcon on inactive InputConnection

Und der aktuellste Code:
1findViewById(R.id.btlogin).setOnClickListener( new View.OnClickListener() {
2
3
4 @Override
5 public void onClick(View v) {
6
7 EditText etusername = (EditText) findViewById (R.id.etusername);
8 String username = etusername.getText().toString();
9
10 EditText etpassword = (EditText) findViewById (R.id.etusername);
11 String password = etpassword.getText().toString();
12
13 WebView wv = new WebView(MainActivity.this);
14 setContentView(wv);
15 wv.getSettings().setBuiltInZoomControls(true);
16 CookieManager.getInstance().setAcceptCookie(true);
17 wv.getSettings().setJavaScriptEnabled(true);
18 wv.getSettings().setLoadWithOverviewMode(true);
19 wv.getSettings().setUseWideViewPort(true);
20 wv.loadUrl("javascript: {" +
21 "document.getElementById('mod_login_username').value = 'username';" +
22 "document.getElementById('mod_login_password').value = 'password';" +
23 "var frms = document.getElementsByName('login');"+
24 "frms[0].submit(); };");
25 wv.setWebViewClient(new WebViewClient() {
26 @Override
27 public boolean shouldOverrideUrlLoading(WebView view, String url) {
28 return false;
29 }
30 });
31 wv.loadUrl("http://ggnauen.de");
32
33
34
35 }
36
37 });

— geändert am 19.12.2013, 16:11:59

LG Optimus Me mit Root

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 16:18:08 via Website

Immer noch. Was ich exakt meine, ändere bitte

1wv.loadUrl("javascript: {" +
221 "document.getElementById('mod_login_username').value = 'username';" +
322 "document.getElementById('mod_login_password').value = 'password';" +
423 "var frms = document.getElementsByName('login');"+
524 "frms[0].submit(); };");

in Richtung:
1wv.loadUrl("javascript: {" +
221 "document.getElementById('mod_login_username').value = " + username + ";
322 document.getElementById('mod_login_password').value =" + password +";
423 var frms = document.getElementsByName('login');"+
524 "frms[0].submit(); };");

Mit dem Fehler im LogCat kann ich so nichts direkt anfangen, aber vielleicht behebt sich das ja dadurch ; )

//Edit und noch ein Fehler:

1EditText etpassword = (EditText) findViewById (R.id.etusername);

Siehst du selber, oder? :)

— geändert am 19.12.2013, 16:20:29

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 16:21:46 via Website

Funktioniert leider immernoch nicht... Hat sich mal jemand die Website angeschaut? Vielleicht sind ja die id's falsch.... Was ich nicht glaube, denn ich habe mehrere ausprobiert.
hier LogCat:
112-19 16:22:28.875: D/libEGL(2491): loaded /system/lib/egl/libEGL_mali.so
212-19 16:22:28.875: D/libEGL(2491): loaded /system/lib/egl/libGLESv1_CM_mali.so
312-19 16:22:28.880: D/libEGL(2491): loaded /system/lib/egl/libGLESv2_mali.so
412-19 16:22:28.885: E/(2491): Device driver API match
512-19 16:22:28.885: E/(2491): Device driver API version: 23
612-19 16:22:28.885: E/(2491): User space API version: 23
712-19 16:22:28.885: E/(2491): mali: REVISION=Linux-r3p2-01rel3 BUILD_DATE=Wed Oct 9 21:05:57 KST 2013
812-19 16:22:28.910: D/OpenGLRenderer(2491): Enabling debug mode 0
912-19 16:22:35.230: V/WebViewChromium(2491): Binding Chromium to the background looper Looper (main, tid 1) {41e0d678}
1012-19 16:22:35.230: I/chromium(2491): [INFO:library_loader_hooks.cc(112)] Chromium logging enabled: level = 0, default verbosity = 0
1112-19 16:22:35.235: I/BrowserProcessMain(2491): Initializing chromium process, renderers=0
1212-19 16:22:35.245: W/chromium(2491): [WARNING:proxy_service.cc(888)] PAC support disabled because there is no system implementation
1312-19 16:22:35.300: W/AwContents(2491): nativeOnDraw failed; clearing to background color.
1412-19 16:22:35.410: I/chromium(2491): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: (1)
1512-19 16:22:35.425: I/chromium(2491): [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
1612-19 16:22:35.435: I/chromium(2491): [INFO:async_pixel_transfer_manager_android.cc(56)] Async pixel transfers not supported
1712-19 16:22:36.065: I/chromium(2491): [INFO:CONSOLE(343)] "Uncaught ReferenceError: _gat is not defined", source: http://ggnauen.de/ (343)

— geändert am 19.12.2013, 16:23:32

LG Optimus Me mit Root

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 16:26:13 via Website

Es kann gut sein dass der Fehler auf der Website zu finden ist bzw. bei den id's, aber vorher würde ich deinen Code 100% korrekt sehen wollen.
Das hast du schon korrigiert?

11EditText etpassword = (EditText) findViewById (R.id.etusername);

So kann es natürlich unmöglich funktionieren, daher ist es auch noch! gar kein Wunder dass du nicht einloggst ;)
Interessant könnte es werden wenn dein Code von Fehlern befreit ist und das Problem besteht.

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 16:28:25 via Website

ja, habe ich korrigiert. Hier habt ihr mal den GESAMTEN Code meiner MainActivity:
1package com.timbremer.vertretungsplanggnauen;
2
3import org.apache.http.util.EncodingUtils;
4
5import android.app.Activity;
6import android.app.AlertDialog;
7import android.content.Context;
8import android.content.DialogInterface;
9import android.content.Intent;
10import android.os.Bundle;
11import android.view.Menu;
12import android.view.MenuItem;
13import android.view.View;
14import android.view.View.OnClickListener;
15import android.view.inputmethod.InputMethodManager;
16import android.webkit.CookieManager;
17import android.webkit.WebView;
18import android.webkit.WebViewClient;
19import android.widget.Button;
20import android.widget.EditText;
21import android.widget.Toast;
22
23
24public class MainActivity extends Activity {
25
26 private EditText etusername;
27 private EditText etpassword;
28 private Button btlogin;
29 private Button btfeedback;
30 private Button btraum;
31
32
33 @Override
34 public void onCreate(Bundle savedInstanceState) {
35 super.onCreate(savedInstanceState);
36 setContentView(R.layout.activity_main);
37 setTitle("Vertretungsplan");
38
39 findViewById(R.id.btfeedback).setOnClickListener(new OnClickListener() {
40 @Override
41 public void onClick(View v) {
42 Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
43 String[] recipients = new String[]{"tbremer19@gmail.com", "",};
44 emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, recipients);
45 emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Feedback zur Vertretungsplan App");
46 emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Fehler, Lob, Kritik oder Funktionswünsche:");
47 emailIntent.setType("text/plain");
48 startActivity(Intent.createChooser(emailIntent, "Sende Mail mit..."));
49 finish();
50 }
51 });
52
53
54
55 new AlertDialog.Builder(MainActivity.this)
56
57 .setTitle("BETA")
58
59 .setMessage("Die App befindet sich zurzeit noch in einer Beta-Testphase. Wenn du Fehler in meiner App findest, klick einfach auf den Feedback-Button.")
60
61 .setNeutralButton("Fenster Schließen",
62
63 new DialogInterface.OnClickListener() {
64
65 public void onClick(DialogInterface dialog,
66
67 int which) {
68
69 }
70
71 }).show();
72
73
74
75 //button
76
77 findViewById(R.id.btraum).setOnClickListener( new View.OnClickListener() {
78
79
80 @Override
81 public void onClick(View v) {
82 Intent intent = new Intent(MainActivity.this, RaumplanActivity.class);
83 startActivity(intent);
84 finish();
85 }
86 });
87
88
89 findViewById(R.id.btlogin).setOnClickListener( new View.OnClickListener() {
90
91
92 @Override
93 public void onClick(View v) {
94
95 InputMethodManager inputManager = (InputMethodManager)
96 getSystemService(Context.INPUT_METHOD_SERVICE);
97
98inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
99 InputMethodManager.HIDE_NOT_ALWAYS);
100
101 EditText etusername = (EditText) findViewById (R.id.etusername);
102 String username = etusername.getText().toString();
103
104 EditText etpassword = (EditText) findViewById (R.id.etpassword);
105 String password = etpassword.getText().toString();
106
107 WebView wv = new WebView(MainActivity.this);
108 setContentView(wv);
109 wv.getSettings().setBuiltInZoomControls(true);
110 CookieManager.getInstance().setAcceptCookie(true);
111 wv.getSettings().setJavaScriptEnabled(true);
112 wv.getSettings().setLoadWithOverviewMode(true);
113 wv.getSettings().setUseWideViewPort(true);
114 wv.loadUrl("javascript: {" +
115 "document.getElementById('mod_login_username').value = " + username + ";
116 document.getElementById('mod_login_password').value =" + password +";
117 var frms = document.getElementsByName('login');"+
118 "frms[0].submit(); };");
119 wv.setWebViewClient(new WebViewClient() {
120 @Override
121 public boolean shouldOverrideUrlLoading(WebView view, String url) {
122 return false;
123 }
124 });
125 wv.loadUrl("http://ggnauen.de/index.php");
126
127
128
129 }
130
131 });
132
133
134
135 }
136
137 @Override
138 public boolean onCreateOptionsMenu(Menu menu) {
139 // Inflate the menu; this adds items to the action bar if it is present.
140 getMenuInflater().inflate(R.menu.raumplan, menu);
141 return true;
142 }
143 @Override
144 public boolean onOptionsItemSelected(MenuItem item) {
145 // Handle item selection
146 switch (item.getItemId()) {
147 case R.id.mclose:
148 finish();
149 return true;
150 case R.id.msettings:
151 startActivity(new Intent(this, SettingsActivity.class));
152 return true;
153 case R.id.mraumplan:
154 startActivity(new Intent(this, RaumplanActivity.class));
155 return true;
156 default:
157 return super.onOptionsItemSelected(item);
158 }
159 }
160}

— geändert am 19.12.2013, 16:47:43

LG Optimus Me mit Root

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 16:38:51 via Website

Du hast meine Korrektur der Stringzusammensetzung in Zeile 109 nicht annähernd korrekt umgesetzt :/
username & password stehen immer noch in den doppelten Ausführungszeichen.
Einfache und Doppelte Anführungszeichen sind nicht identisch in Java.

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 16:42:58 via Website

Pascal
Du hast meine Korrektur der Stringzusammensetzung in Zeile 109 nicht annähernd korrekt umgesetzt :/
username & password stehen immer noch in den doppelten Ausführungszeichen.
Einfache und Doppelte Anführungszeichen sind nicht identisch in Java.
#
Sorry, mein Fehler. Habe ich bei deinem Post überlesen. Habs in meinen Code eingefügt, allerdings funktioniert es immernoch nicht.

LG Optimus Me mit Root

Antworten
Ludy
  • Admin
  • Forum-Beiträge: 7.959

19.12.2013, 17:35:30 via App

Tim B.
1...
212-19 16:22:35.410: I/chromium(2491): [INFO:CONSOLE(1)] "Uncaught TypeError: Cannot set property 'value' of null", source: (1) ...

was kannst du dort lesen?

Gruß Ludy

— geändert am 19.12.2013, 17:36:27

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 17:49:38 via Website

Ich kann schon lesen, weiß nur nicht, wie ich das beheben soll

LG Optimus Me mit Root

Antworten
impjor
  • Forum-Beiträge: 1.793

19.12.2013, 18:15:48 via Website

Auch in JavaScript musst du Strings in einfache oder doppelte Anführungszeichen packen. Also nicht
1document.getElementById('mod_login_username').value = " + username + ";
sondern
1document.getElementById('mod_login_username').value = '" + username + "';

LG

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Antworten
Pascal
  • Forum-Beiträge: 48

19.12.2013, 18:30:16 via Website

Naja, ist halt eine NullPointerException auf JavaScript-Seite.

"Uncaught ReferenceError: _gat is not defined"
Den Fehler kannst du schonmal ignorieren. Den haut die JavaScript Konsole Standardmäßig raus, beim laden der Website.
Gehört wohl zu nem Google Analytics Script.

Ansonsten, ich bin kein JavaScript/Web(-View)-Experte, aber einmal frag ich mich woher du den Javascriptaufruf her hast, bzw. wie sicher du dir bist, dass das so funktioniert. Müsste man doch auch in der Entwicklerkonsole am Rechner mal testen können, right?

Könnte es evtl. sein dass du im WebView erst die Seite laden solltest, und dann darauf die loadURL mit dem JavaScript aufrufen musst?

Das sind aber nun mehr Vermutungen, ich hoffe/gehe davon aus dass der Rest deines Codes jetzt korrekt ist und in den Variablen username und password die Inhalte der beiden Eingabefelder auftauchen.

Antworten
Tim B.
  • Forum-Beiträge: 101

19.12.2013, 19:00:48 via Website


Warum wird denn jetzt das obere unterstrichen aber das untere nicht?!

— geändert am 19.12.2013, 19:03:19

LG Optimus Me mit Root

Antworten
Pascal
  • Forum-Beiträge: 48

20.12.2013, 01:16:06 via Website

Wenn du dir den unterstrichenen Teil mit der nächsten Zeile im Kontext anschaust, dann hast du zwischen den beiden +-Zeichen folgendes stehen:
...+ "stringstring"stringstring" + ...
Das kann so auf keinen Fall funktionieren, setz hinter das Semikolon(und das in der nächsten Zeile) nochmal ein " +.
Auch zwischen Zeile 117 und 118 fehlt ein +. Gewissenhafter und bedachter programmieren bzw. nachdenken über das Problem :)

— geändert am 20.12.2013, 01:17:38

Antworten