同事反馈提供的截图方法无法完成截图功能,功能代码如下:
try {
String shootCommand = "screencap -p " + path;
Runtime.getRuntime().exec(shootCommand);
} catch (IOException e) {
e.printStackTrace();
}
指令使用ADB SHELL 输入是可以完成正常的截图的,如screencap -p sdcard/Pictures/123.png,但是用代码调用却有问题,只生成了一个0b大小文件。分析可能为apk权限问题,但给apk 清单文件添加了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
以及打上系统签名,问题仍然没有解决。
排查了很久,最后发现在清单文件添加了
android:sharedUserId="android.uid.system"
问题解决,初步分析为:没添加这个权限,截图时进程被挂起,所以只留下了个0b大小的问题。
欢迎知道具体原理的朋友留言指教。