我无法用ICS内置快捷方式截取我的应用程序截图的任何原因?

起初,这似乎不适合问这个……但是因为我只用我自己的应用程序注意到这个问题,我想没有其他地方可以问它。 也许我做错了什么,但我不知道是什么……

您可能已经知道,ICS允许您按下Power + VolumeDown屏幕截图。 我拥有一台HTC One X,快捷方式是Power + Home 。 我不知道这是否会改变任何事情(也许有人可能会尝试使用Galaxy Nexus)。

我自己的应用程序,通知议程(我不打算将它链接起来,所以我没有被指控为垃圾邮件或类似的东西,但我真的没办法发布这个问题而没有自我宣传我的应用程序原因),不允许我使用我的One X上面的键组合截取屏幕截图。我可以截取任何其他应用程序的屏幕截图,但它不能在我自己的…

你觉得我到底在做什么来“禁用”这个? 我的应用程序非常简单,并且没有太多事情要发生这种情况。 有任何想法吗?

每当我尝试截取我的应用程序的屏幕截图时,我都会在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) 

截图工作时不会发生这种情况。 而是记录了一系列对屏幕截图应用程序和其他许多内容的调用。

为什么我的应用会阻止屏幕截图并产生上述错误?

我会检查截取屏幕截图的应用程序(对您所说的组合作出反应的应用程序)是否已注册为系统应用程序。 Android by design阻止了应用程序共享帧缓冲区,因此任何试图截取屏幕截图的应用都无法做到。

深入了解该应用的行为和设计。

可能导致这种情况的一件事是为您的窗口打开FLAG_SECURE。 http://developer.android.com/reference/android/view/WindowManager.LayoutParams.html#FLAG_SECURE

我有同样的问题。 您可以使用Eclipse的DDMS透视图来截取屏幕截图,只需运行您的应用程序,输入DDMS透视图并单击选项卡“设备”上的相机图标