Android 对于uiautomator,takeScreenshot始终返回false

Android 对于uiautomator,takeScreenshot始终返回false,android,automation,android-uiautomator,uidevice,Android,Automation,Android Uiautomator,Uidevice,我正在尝试在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我尝试的值: /data/lo

我正在尝试在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我尝试的值:

  • /data/local/tmp/(适用于两种设备)。不确定在设备上的何处可以找到此文件夹,我尝试了此操作,因为我将jar推到了此位置
  • /sdcard/pictures/(适用于Kindle HDX)
  • /storage/simulated/0(适用于Galaxy S4)
不管我尝试的路径如何,条件总是返回false,并且屏幕截图不会在任何设备(实际设备,而不是模拟器)上拍摄。我不确定我错过了什么

我只是按照

问候,,
Rumit

我也遇到了同样的问题,转而使用adb screencap函数。我想这不是一个答案,而是一个解决办法:

Process process = Runtime.getRuntime().exec("screencap -p " + <filePath>);
process.waitFor();
processprocess=Runtime.getRuntime().exec(“screencap-p”+);
process.waitFor();
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/文件名

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