【问题标题】:How to capture a screenshot of other Android applications from an app without root?如何从没有root的应用程序中捕获其他Android应用程序的屏幕截图?
【发布时间】:2012-06-30 04:36:46
【问题描述】:

我想截取我手机上运行的 Android 应用程序的屏幕截图。

我尝试使用ScreenShot UX 应用程序。这也可以在无根电话上完成。 知道如何从后台运行的服务中获取 Android 应用程序的屏幕截图吗?

我希望我的服务定期捕获屏幕并发送到服务器。

【问题讨论】:

  • 同时按下锁定/电源按钮和主页/返回按钮
  • 我想要代码。
  • 你应该在你的问题中提到,听起来你离题了(虽然你不是)
  • Screenshot Android的可能重复
  • 那篇文章讲述了如何从应用程序本身创建视图的快照。无论应用程序如何,我都想从服务中截取屏幕截图

标签: android


【解决方案1】:

为非您自己的应用截取屏幕截图的唯一方法是获取原始帧缓冲区。帧缓冲区通常位于/dev/fb0/dev/graphics/fb0。在某些设备(如 LG Optimus One)上,无需 root 权限即可访问,但在大多数设备(如 Nexus S)上,您需要为此获得 root 权限。出于安全原因,这通常是不允许的,因为恶意应用可能会在后台截取屏幕截图并将其发送到远程服务器,从而泄露电子邮件 ID 和密码等信息,在某些情况下还包括银行账户详细信息。

【讨论】:

  • 从服务中截取屏幕截图是否合法。我想将它用于移动跟踪,而不是用于任何恶意应用。
  • 您可以使用服务调用您的应用程序中的方法来截取您自己的应用程序的屏幕截图,但如果不使用帧缓冲区,则无法将其与其他应用程序一起使用。虽然您可能对它有合法用途,但许多应用程序可能会滥用它,因此它在非 root 设备上基本上不可用。
  • +1 非常感谢。我注意到在我较新的 nexus 设备 4.4.4+ 上,缓冲区不在这两个位置 - 并且知道它可能移动到了哪里?
【解决方案2】:

看看Android-screenshot-library,它允许以编程方式从 Android 设备捕获屏幕截图,而无需拥有 root 访问权限。

【讨论】:

  • 我可以在没有桌面应用程序的情况下运行程序吗?在 ScreenshotService.java 中有一个方法 retreiveRawScreenshot()。它正在连接到本机应用程序。是在 PC 中运行的本机应用程序吗? code.google.com/p/android-screenshot-library/source/browse/demo/…
  • 以上帖子也取自应用程序。我想运行一个服务后台,它将手机上运行的应用程序的屏幕截图发送到服务器。
  • @Abi AFAIK 如果您想截取当前设备屏幕的屏幕截图(任何应用程序)(我想这就是您要查找的内容),那么您需要拥有 root 权限。
  • Screenshot UX 也适用于无根手机,但仅适用于特定型号。
【解决方案3】:

从 Android 5.0+ 开始,您可以使用 SDK 中名为 media projections 的新功能进行屏幕截图,而无需 root 权限。 Google 提供了示例代码here

【讨论】:

    猜你喜欢
    • 2020-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-08
    • 2013-11-26
    • 1970-01-01
    相关资源
    最近更新 更多