7

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

您可能知道,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)

屏幕截图有效时不会发生这种情况。而是记录了对屏幕截图应用程序的大量其他调用以及许多其他事情。

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

4

3 回答 3

4

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

于 2013-06-25T22:53:45.513 回答
0

我会检查截取屏幕截图的应用程序(对您所说的组合键做出反应的应用程序)是否已注册为系统应用程序。Android 设计阻止应用共享帧缓冲区,因此任何试图截取屏幕截图的应用都不会这样做。

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

于 2012-10-05T17:19:21.790 回答
0

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

于 2013-06-25T21:24:24.223 回答