0

我在顶部有一个按钮,可以让我探索我的 android ui,我正在尝试向其添加屏幕截图操作,向按钮添加操作的部分工作正常,但不起作用的是屏幕截图代码,但是当我将此代码添加到"myactivity"按钮时,此代码有效,但是当我探索 android ui 时,当此操作在我的 allways on top 按钮上时,它给了我一个没有数据的黑色图像(0 kb )。这是我的截图代码:

View content = findViewById(android.R.id.content).getRootView();
content.setDrawingCacheEnabled(true);
   Bitmap bitmap = content.getDrawingCache();
   File file = new File( Environment.getExternalStorageDirectory() + "/test.png");
   try 
   {
       file.createNewFile();
       FileOutputStream ostream = new FileOutputStream(file);
       bitmap.compress(CompressFormat.PNG, 100, ostream);
       ostream.close();
   } 
   catch (Exception e) 
   {
       e.printStackTrace();
   }

也许问题是content或者如果没有root访问权限就无法完成,但是如果需要root访问权限,你能给我一个示例代码吗?

4

1 回答 1

0

以下是通过 shell 命令在有根设备上截屏的代码 'fileDestination' 是您希望保存截屏文件的位置的路径。

    try {
        Process process = Runtime.getRuntime().exec("su", null,null);

        OutputStream os = process.getOutputStream();
        os.write(("/system/bin/screencap -p " + fileDestination).getBytes("ASCII"));
        os.flush();
        os.close();
        process.waitFor();
    } catch (IOException e) {
        Log.d(TAG,LOG_LABEL+" IOException e:: SCREENSHOT FAILED");
        e.printStackTrace();
    } catch (InterruptedException e) {
        Log.d(TAG,LOG_LABEL+"InterruptedException e:: SCREENSHOT FAILED");
        e.printStackTrace();
    }
于 2013-09-20T12:01:36.577 回答