屏幕截图捕获屏幕时出现0字节文件

时间:2012-08-19 03:32:28

标签: java android screenshot

我在捕获未植根电话的屏幕时遇到了麻烦。

我在电脑上尝试过这个命令:

adb shell /system/bin/screencap -p /sdcard/out.png

这很有效。

但是,每当我尝试在我的应用程序中使用此命令时:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

            String[] str ={"/system/bin/screencap","-p","/sdcard/out.png"};

            try {  
                Process ps = Runtime.getRuntime().exec(str); 
                try { 
                    ps.waitFor(); 
                } catch (InterruptedException e) { 
                    e.printStackTrace(); 
                }  
            } catch (IOException e) { 
                Toast.makeText(this, ""+e, Toast.LENGTH_LONG).show(); }


}

我总是得到0个字节的out.png。我认为源代码没有错误,但我无法理解为什么会出现这种错误。

请帮我解决这个问题。

感谢。

1 个答案:

答案 0 :(得分:6)

在logcat中搜索类似的东西

  

perrmission失败:来自uid的android.permission.READ_FRAME_BUFFER = 10113 pid = 2934     113 PermissionCache D检查android.permission.READ_FRAME_BUFFER for uid = 10113 =>否认(294我们)     113 SurfaceFlinger E Permission Denial:无法读取framebuffer pid = 2934,uid = 10113

如果您收到该错误,则表示权限问题。

即使您添加了READ_FRAME_BUFFER权限,它仍然无效。 通常,这意味着应用程序没有读取帧缓冲区的权限,必须使用系统证书进行编译或使用su获取root权限。