我正在使用以下代码截取当前 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/