Langes drücken des Back-Button in meiner App deaktivieren

  • Antworten:3
Julia Keller
  • Forum-Beiträge: 8

17.03.2012, 11:14:17 via Website

Hallo liebe Developer!

Ich habe mir vor kurzem ein Pad gekauft und versuche seitdem auch eine App dafür zu schreiben. Leider scheitere ich an einem Punkt. Ich möchte in meiner App den Back-Button deaktivieren. Dies funktioniert leider nur teilweise.

Kurzes Drücken des Back-Buttons -> Ist bereits deaktiviert
Langes Drücken des Back-Buttons -> Deaktivierung fehlgeschlagen

Ich habe einige Möglichkeiten gegoogelt und gestestet, leider ohne Erfolg. Mein zuletzt vewendetes Script kommt von
http://android-developers.blogspot.de/2009/12/back-and-other-hard-keys-three-stories.html

Ich kompiliere die App in Eclipse mit Java 1.5.

Was kann ich machen, damit die Funktion des Back-Buttons bei langem Drücken auch deaktiviert ist?

Hat jemand eine Idee?

Lg Julia


Hier auch noch mein gesamter Code:
1package com.tabletizer.killbuttons;
2
3import android.app.Activity;
4import android.os.Bundle;
5import android.view.KeyEvent;
6import android.widget.TextView;
7import android.widget.Toast;
8
9public class KillButtonsActivity extends Activity {
10 /** Called when the activity is first created. */
11 @Override
12 public void onCreate(Bundle savedInstanceState) {
13 super.onCreate(savedInstanceState);
14 setContentView(R.layout.main);
15
16 }
17
18
19 @Override
20 public boolean onKeyUp(int keyCode, KeyEvent event) {
21 if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking()
22 && !event.isCanceled()) {
23 //Toast.makeText(KillButtonsActivity.this, "Released", Toast.LENGTH_SHORT).show();
24 TextView greetingField = (TextView) findViewById(R.id.textfield);
25 greetingField.setText("Released");
26 return true;
27 }
28 return super.onKeyUp(keyCode, event);
29 }
30
31 @Override
32 public boolean onKeyDown(int keyCode, KeyEvent event) {
33 if (keyCode == KeyEvent.KEYCODE_BACK) {
34 //Toast.makeText(KillButtonsActivity.this, "Pressed", Toast.LENGTH_SHORT).show();
35 TextView greetingField = (TextView) findViewById(R.id.textfield);
36 greetingField.setText("Pressed");
37 event.startTracking();
38 return true;
39 }
40 return super.onKeyDown(keyCode, event);
41 }
42
43 @Override
44 public boolean onKeyLongPress(int keyCode, KeyEvent event) {
45 if (keyCode == KeyEvent.KEYCODE_BACK) {
46 //Toast.makeText(KillButtonsActivity.this, "LongPressed", Toast.LENGTH_SHORT).show();
47 TextView greetingField = (TextView) findViewById(R.id.textfield);
48 greetingField.setText("LongPressed");
49
50 return true;
51 }
52 return super.onKeyLongPress(keyCode, event);
53 }
54
55
56}

— geändert am 17.03.2012, 11:40:31

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

21.03.2012, 21:15:47 via Website

Hi,
also ich habe mir das unter Android 2.3.4 / 3.1 angeschaut und dieser macht das was er soll.

Gruß,
Markus

Antworten
Julia Keller
  • Forum-Beiträge: 8

22.03.2012, 19:47:45 via Website

Danke für die Antwort! Kannst Du mir evtl. sagen, was Du für Einstellungen in der Manifest-Datei hast? Dass evtl. daran liegt?

LG Julia

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

22.03.2012, 20:22:22 via Website

Hi,
das steht nichts besonderes drin. Einfach nur eine Activity mit dein Launch-Filter.
Ich kann mir aber auch nicht vorstellen das die Manifest dieses Verhalten beeinflussen könnte.
Alternativ hast du deine XML-Datei hier rein und ich kann es dann eben noch mal testen.

Gruß,
Markus

Antworten