如何以编程方式拍摄android主屏幕的截图?

如何以编程方式拍摄android主屏幕的截图?,android,Android,我需要通过我的应用程序拍摄主屏幕的截图。我正在使用以下代码,但它提供了0字节的图像。请让我知道我做错了什么 公共OnClickListener captureOnClickListener=新OnClickListener(){ @凌驾 公共void onClick(视图v){ 工艺过程; 试一试{ process=Runtime.getRuntime().exec(“screencap-p/sdcard/screen_1.png”); BufferedReader BufferedReader

我需要通过我的应用程序拍摄主屏幕的截图。我正在使用以下代码,但它提供了0字节的图像。请让我知道我做错了什么

公共OnClickListener captureOnClickListener=新OnClickListener(){ @凌驾 公共void onClick(视图v){ 工艺过程; 试一试{ process=Runtime.getRuntime().exec(“screencap-p/sdcard/screen_1.png”); BufferedReader BufferedReader=新的BufferedReader( 新的InputStreamReader(process.getInputStream()); 字符串行=null; System.out.println(“”); 而((line=bufferedReader.readLine())!=null){ 系统输出打印项次(行); } System.out.println(“”); int exitVal=process.waitFor(); System.out.println(“进程exitValue:+exitVal”); }捕获(例外e){ e、 printStackTrace(); } } })

任何帮助都将不胜感激。
提前谢谢。

您尝试过这个答案吗?试试这个谢谢你的建议,但我已经尝试了你提到的代码。它给出了我当前活动的屏幕截图,但我想要主屏幕上任何内容的屏幕截图。任何其他方法。@DeepThinker-你不允许这样做。@IsabelHM链接的答案告诉你如何做所有允许你做的事情做从其他应用程序抓取屏幕截图将允许恶意软件窃取密码(如果启用了“显示密码”)并捕获私人对话,因此不允许应用程序从其他应用程序捕获屏幕。您可以在根设备上解决这个问题,或者让用户从shell启动后台服务。FWIW,您应该能够在
logcat
输出中看到有关screencap失败的信息。
  public OnClickListener captureOnClickListener = new OnClickListener(){
  @Override       
  public void onClick(View v) { 
  Process process;            
  try {
  process = Runtime.getRuntime().exec("screencap -p /sdcard/screen_1.png");
  BufferedReader bufferedReader = new BufferedReader(
  new InputStreamReader(process.getInputStream()));

  String line=null;
  System.out.println("<OUTPUT>");
  while((line = bufferedReader.readLine())!= null ){
  System.out.println(line);
   }
  System.out.println("</OUTPUT>");
  int exitVal = process.waitFor();
  System.out.println("Process exitValue :" + exitVal);
  } catch (Exception e) {
  e.printStackTrace();            
  }       
}