我正在尝试在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...");
我试过ANYPATH 值:
无论我尝试的路径如何,条件总是返回 false ,并且不会在任何设备(实际设备而非模拟器)上截取屏幕截图。我不确定我在这里错过了什么?
我只是遵循http://developer.android.com/tools/help/uiautomator/UiDevice.html#takeScreenshot(java.io.File)
的语法此致 Rumit
答案 0 :(得分:4)
takeScreenshot()方法适用于4.2及以上的Android版设备。
如果设备版本合适,请使用以下代码。
File path = new File("/sdcard/filename.png");
int SDK_VERSION = android.os.Build.VERSION.SDK_INT;
if (SDK_VERSION >= 17) {
mUiAutomatorTestCase.getUiDevice().takeScreenshot(PATH);
}
我们可以通过以下命令查看该文件。
$ adb shell ls -l / sdcard / name-of-file
答案 1 :(得分:1)
我遇到了同样的问题,转而使用adb screencap功能。我想这不是答案,而是一种解决方法:
Process process = Runtime.getRuntime().exec("screencap -p " + <filePath>);
process.waitFor();
答案 2 :(得分:0)
我也有这个问题。在调试工具的帮助下,我发现这是一个权限问题。我通过在清单中添加存储写入权限来解决它。如果您使用的是6.0+设备,则还必须在运行时手动授权测试应用程序。