3

我正在尝试在 Galaxy S4 和 Kindle HDX 8.9 上自动“截屏”,我正在使用以下代码。

if(!(getUiDevice().takeScreenshot(new File("ANYPATH"))))
         System.out.println("False: Screenshot not taken!!");
     else
         System.out.println("Gangnam Style...");

我尝试过的任何路径值:

  • /data/local/tmp/(对于两个设备)。不知道在设备上哪里可以找到这个文件夹,我尝试了这个,因为我把我的罐子推到了这个位置。
  • /sdcard/pictures/(适用于 Kindle HDX)
  • /storage/emulated/0(适用于 Galaxy S4)

无论我尝试何种路径,条件始终返回false,并且不会在任何设备(实际设备而不是模拟器)上截取屏幕截图。我不确定我在这里错过了什么?

我只是按照http://developer.android.com/tools/help/uiautomator/UiDevice.html#takeScreenshot(java.io.File)的语法

问候, 鲁米特

4

3 回答 3

4

The takeScreenshot() method is applicable from 4.2 and above android version devices.

If the device version is appropriate then use the following piece of code.

File path = new File("/sdcard/filename.png");
int SDK_VERSION = android.os.Build.VERSION.SDK_INT; 
if (SDK_VERSION >= 17) {
    mUiAutomatorTestCase.getUiDevice().takeScreenshot(PATH);
}

We can view the file by following command.

$ adb shell ls -l /sdcard/name-of-file

于 2013-12-20T07:07:58.747 回答
1

我遇到了同样的问题并改用 adb screencap 功能。我想这不是答案,而是一种解决方法:

Process process = Runtime.getRuntime().exec("screencap -p " + <filePath>);
process.waitFor();
于 2013-12-07T01:06:30.327 回答
0

我也有这个问题。在调试工具的帮助下,我发现这是一个权限问题。我通过在清单中添加存储写入权限来解决它。如果您使用的是 6.0+ 设备,您还必须在运行时手动授权您的测试应用程序的权限。

于 2017-10-31T11:05:26.203 回答