为什么程序在获得“su”后仍然没有截屏?

时间:2013-03-16 22:07:39

标签: android screenshot root framebuffer su

我按下按钮并编程获取SU,但是png文件是0字节权重。 Logcat说

  

权限被拒绝:无法读取framebuffer pid = 12844 uid = 10087。

那为什么会这样呢。我的手机扎根了,程序已经搞定了。怎么了?

Button btn = (Button) findViewById(R.id.button1);
        btn.setOnClickListener (new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                try {
                    Process process = Runtime.getRuntime().exec("su");
                    Process pr = Runtime.getRuntime().exec("/system/bin/screencap -p /sdcard/s.png");
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        });

2 个答案:

答案 0 :(得分:2)

你应该使用这个,它应该有更好的支持:

@Override
public void onCLick(View v)
 try{
    Process process = Runtime.getRuntime().exec("su");
    DataOutputStream os = new DataOutputStream(process.getOutputStream());

    os.writeBytes("/system/bin/screencap -p /sdcard/s.png\n");
    os.writeBytes("exit\n");
    os.flush();
    os.close();

    process.waitFor();
 } catch (Exception e){
 };
};

答案 1 :(得分:0)

试试这个:

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            try {
                Runtime.getRuntime().exec("su -c /system/bin/screencap -p /sdcard/s.png");
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    });