screenshot based on android 4.4

扒了一下原生的android4.4截屏代码,
调用栈大概是GlobalScreenshot.takeScreenshot()->SurfaceControl.screenshot()->SurfaceFlinger.captureScreen()也就是nativeScreenshot()
我直接把截出来的Bitmap compress出到一个File中。
然而是无法正常执行的,因为SurfaceFlinger会检查代码的pid 和uid,并说Permission Denial:Can't read framebuffer。

首先需要对apk进行系统签名(关键性步骤),然后使用sharedUserId="android.uid.system" 后会出现问题java.lang.SecurityException: Permission Denial: getIntentSender()
,原因是有PendingIntent.getXXX导致的,google一下有说法是getXXX的组件要写进manifest,但是重启了一下就好了,应该是shareUserId需要重启生效。

你可能感兴趣的:(screenshot based on android 4.4)