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需要重启生效。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容