在Android中以编程方式使用screencap时保存空白文件

时间:2013-04-19 12:56:28

标签: android screen screenshot

代码段

void takeSnapShot() 
    {
        Process process = null;
        try
        {
        process = Runtime.getRuntime().exec("/system/bin/screencap -p /sdcard/snapshot/test_2.png" );

        try
        {
            process.waitFor();
        } catch (InterruptedException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }


        } catch (IOException e)
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }




    }

我正在保存一个空文件,而如果我通过adb shell使用相同的命令,我会抓住我的屏幕。

任何帮助都会很明显

2 个答案:

答案 0 :(得分:0)

编辑:我之前的回答是错误的,任何应用都可以使用屏幕捕获命令。

这可能是一个许可问题。你确定你有权写sdcard吗? 查看此帖子,其中涵盖了您的主题: How to run android system app without root permisson?

答案 1 :(得分:0)

我通过在清单中添加以下权限来解决此问题。

<uses-permission
    android:name="android.permission.READ_FRAME_BUFFER"
    tools:ignore="ProtectedPermissions"/>

注意::这是受保护的权限,我的应用程序是系统应用程序,还使用平台密钥进行了签名。