7 Stimmen

Gibt es einen Grund, warum ich mit der in ICS integrierten Verknüpfung keinen Screenshot von meiner App machen kann?

Auf den ersten Blick scheint dies vielleicht nicht der richtige Ort zu sein, um diese Frage zu stellen... Aber da ich dieses Problem nur bei meiner eigenen Anwendung bemerkt habe, gibt es wohl keinen anderen Ort, um diese Frage zu stellen. Vielleicht mache ich etwas falsch, aber ich habe keine Ahnung, was...

Wie Sie wahrscheinlich wissen, können Sie mit ICS einen Screenshot des Bildschirms machen, indem Sie Power + VolumeDown . Ich besitze ein HTC One X und die Abkürzung lautet Power + Home . Ich weiß nicht, ob das etwas ändert (vielleicht kann jemand mit einem Galaxy Nexus es ausprobieren).

Meine eigene App, Notification Agenda (ich werde sie nicht verlinken, damit ich nicht des SPAMs oder etwas Ähnlichem beschuldigt werde, aber es gibt wirklich keine Möglichkeit, diese Frage zu posten, ohne Eigenwerbung für meine App zu machen), erlaubt mir nicht, mit der oben genannten Tastenkombination Screenshots mit meinem One X zu machen. Ich kann Screenshots von jeder anderen App machen, aber es funktioniert nicht mit meiner eigenen...

Was zum Teufel denken Sie, dass ich dies "deaktivieren" muss? Meine App ist sehr einfach und es gibt nicht viel los für diese zu passieren. Irgendwelche Ideen?

Jedes Mal, wenn ich versuche, einen Screenshot von meiner Anwendung zu machen, erhalte ich dies in logcat:

08-24 00:15:40.570: E/InputManager-JNI(277): An exception was thrown by callback 'interceptKeyBeforeDispatching'.
08-24 00:15:40.570: E/InputManager-JNI(277): java.lang.StringIndexOutOfBoundsException: length=83; regionStart=-1; regionLength=83
08-24 00:15:40.570: E/InputManager-JNI(277):    at java.lang.String.startEndAndLength(String.java:593)
08-24 00:15:40.570: E/InputManager-JNI(277):    at java.lang.String.substring(String.java:1474)
08-24 00:15:40.570: E/InputManager-JNI(277):    at com.android.internal.policy.impl.PhoneWindowManager.interceptKeyBeforeDispatching(PhoneWindowManager.java:2375)
08-24 00:15:40.570: E/InputManager-JNI(277):    at com.android.server.wm.InputMonitor.interceptKeyBeforeDispatching(InputMonitor.java:307)
08-24 00:15:40.570: E/InputManager-JNI(277):    at com.android.server.wm.InputManager$Callbacks.interceptKeyBeforeDispatching(InputManager.java:663)
08-24 00:15:40.570: E/InputManager-JNI(277):    at dalvik.system.NativeStart.run(Native Method)

Das passiert nicht, wenn der Screenshot funktioniert. Stattdessen werden eine Reihe anderer Aufrufe an die Screenshot-App und viele andere Dinge protokolliert.

Warum verhindert meine Anwendung den Screenshot und erzeugt den obigen Fehler?

4voto

Dave C Punkte 929

Dies kann unter anderem dadurch verursacht werden, dass FLAG_SECURE für Ihr Fenster aktiviert ist. http://developer.Android.com/reference/Android/view/WindowManager.LayoutParams.html#FLAG_SECURE

0voto

Alfabravo Punkte 7336

Ich würde überprüfen, ob die App, die den Screenshot macht (die auf die von Ihnen erwähnte Tastenkombination reagiert), als System-App registriert ist. Android verhindert von Haus aus, dass Apps den Framebuffer freigeben, so dass jede App, die versucht, Screenshots zu machen, nicht funktioniert.

Untersuchen Sie das Verhalten und das Design der App genauer.

0voto

pedroca Punkte 1678

Ich hatte das gleiche Problem. Sie können die DDMS-Perspektive von Eclipse verwenden, um Screenshots zu machen. Starten Sie einfach Ihre Anwendung, rufen Sie die DDMS-Perspektive auf und klicken Sie auf das Kamerasymbol auf der Registerkarte "Geräte".

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X