Wie kann ich einen simulierten Tastendruck erzeugen?

  • Antworten:3
Joe Blow
  • Forum-Beiträge: 2

13.04.2012, 03:08:07 via Website

Hallo, ich arbeite seit längerem an einem Android Projekt das unter anderem eine Loginseite (PHP) aufruft. Die aufgerufene Seite soll automatisch mit 2 Parametern befüllt werden. In dem Feld "Benutzername eingeben:" soll der Benutzername eingetragen werden und im Feld "Passwort eingeben" soll das Passwort eingegeben werden.

Ich habe versucht das ganze mit HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost("http://....IP.../main/login.php");
zu realisieren aber es funktioniert nicht. Die App stürzt ab und bringt eine Fehlermeldung das dies nicht ausgeführt werden kann.

Nun versuche ich mich daran das über eine simulierte Tasteneingabe zu realisieren. In Java gibt es einen Robot befehl , der erkennt aber Android nicht. Ich habe lange recherchiert und komme auf keinen grünen Zweig wie ich diese 2 Parameter automatisch eintragen lassen kann damit sich der Benutzer automatisch einloggt.

Ich hoffe es kann mit jemand helfen

Mfg

Antworten
Markus B.
  • Forum-Beiträge: 636

13.04.2012, 07:58:11 via App

Hi, du kannst dein Problem mit dem HttpClient lösen. Der Absturz deiner App lag halt an deiner Implementierung. Wenn du den entsprechenden Code postest können wir eben drüber schauen.

Gruß,
Markus

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

13.04.2012, 09:20:16 via Website

1. das:
Markus B.
Der Absturz deiner App lag halt an deiner Implementierung. Wenn du den entsprechenden Code postest können wir eben drüber schauen.

und 2. einfach mal googlen. Dafür gibt es hunderte Beispiele im Netz.
Unter anderem hier: http://hc.apache.org/httpcomponents-client-ga/examples.html
Abschnitt "Form based logon"

Antworten
Joe Blow
  • Forum-Beiträge: 2

15.04.2012, 20:57:09 via Website

Hier ist ein Code ausschnitt. Das Beispiel von dir gepostet habe ich ausprobiert , das funktioniert ebenfalls nicht.

public class PersHauptActivity extends Activity implements OnClickListener {


Button button_care2x;
Button button_terminplan;
Button button_patientendaten;
Button button_fachliteratur;
Button button_zimmerbelegung;


public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.pershaupt1);


button_care2x=(Button)findViewById(R.id.button_care2x);
button_care2x.setOnClickListener(this);

button_terminplan=(Button)findViewById(R.id.button_terminplan);
button_terminplan.setOnClickListener(this);

}

//startet index.php- nach 4 sek startet login.php- Einloggparameter werden ausgefüllt
public void onClick(View v) {


switch (v.getId())
{
case R.id.button_care2x:

Uri uri = Uri.parse("http://192.168.178.20/index.php");
Uri urilogin = Uri.parse("http://192.168.178.20/main/login.php");

Intent intent = new Intent(Intent.ACTION_VIEW, uri );
Intent intent1 = new Intent(Intent.ACTION_VIEW, urilogin );

startActivity(intent);
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

startActivity(intent1);



try {
Thread.sleep(10000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Hier liegt der Fehler

ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("Administrator","care2x@cbs"));

try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://192.168.178.20/main/login.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
InputStream is = entity.getContent();
}catch(Exception e){

}
break;

Wäre dankbar für eure Hilfe.

Antworten