android - 截取任何屏幕的屏幕截图

标签 android screenshot

我正在使用以下代码截取当前 Activity 的屏幕截图:

View rootview = findViewById(android.R.id.content).getRootView();
rootview.setDrawingCacheEnabled(true);

并将图片保存到SD卡上。

但我不仅尝试截取此应用程序的屏幕截图,还尝试截取此应用程序之外的屏幕截图,我做了一些研究,发现只有在 ROOTED 设备上才有可能,但有什么方法可以截取屏幕没有生根设备的任何屏幕截图?

最佳答案

尝试使用反射从 PhoneWindowManager.java Refer to this link 调用 takeScreenshot()

引用以下代码自here

为 PhoneWindowManger 执行此操作。

TelephonyManager telephony = (TelephonyManager) 
  context.getSystemService(Context.TELEPHONY_SERVICE);  
  try {
      Log.v(TAG, "Get getTeleService...");
      Class c = Class.forName(telephony.getClass().getName());
      Method m = c.getDeclaredMethod("getITelephony");
      m.setAccessible(true);
      telephonyService = (ITelephony) m.invoke(telephony);
      telephonyService.silenceRinger();
      Log.v(TAG, "Answering Call now...");
      telephonyService.answerRingingCall();
      Log.v(TAG, "Call answered...");
      //telephonyService.endCall();
  } catch (Exception e) {
   e.printStackTrace();
   Log.e(TAG,
           "FATAL ERROR: could not connect to telephony subsystem");
   Log.e(TAG, "Exception object: " + e);
  }

Android L 提供 API 来捕获屏幕截图。引用- https://developer.android.com/reference/android/media/projection/package-summary.html

关于android - 截取任何屏幕的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25024472/

相关文章:

java - 在 JEE Restful Web 服务和 Android 之间使用相同的 API 解析数据的最佳方法是什么?

java - 具有多个表的 ContentProvider

php - 如何为 CentOS 6.5 版服务器设置 ffmpeg

java - toolbar.getChildCount() 返回 0

android - Firebase Crashlytics - 设置用户 ID 不起作用?

java - 如何在android中获取国家代码(调用代码)?

ios - iOS全屏截图

.net - 如何在 dotnet 上以编程方式截取屏幕截图并通过电子邮件发送

ios - "Display P3"iOS模拟器截图

ios - 如何获取包含子层的 View 的屏幕截图?