去除android系统截屏接口
来源:互联网 发布:面对网络舆论你怎么看 编辑:程序博客网 时间:2024/06/09 20:58
众所周知,android为了保护用户隐私,有一个属性可以防止截屏,不过这个属性只能在应用中使用,如果直接攻击系统,还是可以获取截屏的。
两种截屏方式:
一、通过目前应用市场中的截屏软件(截屏大师),获取到了其调用的截屏接口MediaProjection类
二、系统截屏:开机键+音量下
屏蔽方法:
针对一:必走applyVirtualDisplayFlags(),添加flag,使之截屏为空白或者一片黑,ADT的monitor工具也无法截屏咯!
@Override // Binder call public int applyVirtualDisplayFlags(int flags) { if (mType == MediaProjectionManager.TYPE_SCREEN_CAPTURE) { flags &= ~DisplayManager.VIRTUAL_DISPLAY_FLAG_OWN_CONTENT_ONLY; flags |= DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR | DisplayManager.VIRTUAL_DISPLAY_FLAG_PRESENTATION; // + { if (!SystemProperties.getBoolean("ro.allow.screenshot", true)) { flags |= DisplayManager.VIRTUAL_DISPLAY_FLAG_SECURE; } // + } return flags; }...}
针对二:
具体截屏流程参考
最后会调用到:
ISurfaceComposer.cpp(/frameworks/native/libs/gui)virtual status_t captureScreen(const sp<IBinder>& display, const sp<IGraphicBufferProducer>& producer, Rect sourceCrop, uint32_t reqWidth, uint32_t reqHeight, uint32_t minLayerZ, uint32_t maxLayerZ, bool useIdentityTransform, ISurfaceComposer::Rotation rotation) { // + { char value[PROPERTY_VALUE_MAX]; property_get("ro.allow.screenshot", value, "true"); if (strncmp(value, "true", 4) != 0) { return NULL; } // + } Parcel data, reply; data.writeInterfaceToken(ISurfaceComposer::getInterfaceDescriptor()); data.writeStrongBinder(display); data.writeStrongBinder(IInterface::asBinder(producer)); data.write(sourceCrop); data.writeUint32(reqWidth); data.writeUint32(reqHeight); data.writeUint32(minLayerZ); data.writeUint32(maxLayerZ); data.writeInt32(static_cast<int32_t>(useIdentityTransform)); data.writeInt32(static_cast<int32_t>(rotation)); remote()->transact(BnSurfaceComposer::CAPTURE_SCREEN, data, &reply); return reply.readInt32(); }
阅读全文
0 0
- 去除android系统截屏接口
- android系统截屏接口
- Android系统去除蓝牙
- 去除android系统中的“更多”
- 去除android系统中休眠和锁屏
- Android开发activity去除标题栏,去除系统任务栏
- 去除Android系统应用的通知功能
- Android 去除手机系统自带动画
- 去除Android系统应用的通知功能
- 去除Android系统中桌面顶部阴影
- Android系统服务接口
- Android 去除启动白屏
- Android 去除开机锁屏
- android 调用系统的接口
- android 调用系统的接口
- Android去除系统自带动画的两种方法
- Android去除系统自带动画的两种方法
- android系统去除和增加启动导航页
- spring ContentNegotiationManagerFactoryBean 内容协商
- xamarin学习笔记B05(ios的UIScrollView)
- 在WebStorm里配置watcher实现编辑less文件时自动生成.css文件
- 程序4
- placeholder
- 去除android系统截屏接口
- iOS 中tableView 多选时怎么更改cell前的选中框样式
- 建筑师创建了一个可以抵御地震的可折叠房屋
- 寻梦环游记身后的皮克斯,是卢卡斯和乔布斯的梦幻成果
- XMind 8 Update6破解补丁破解过程
- Python3.x和Python2.x的区别
- 《Apache Flume教程》第六章 Flum的配置和使用方法
- ambari安装配置
- Linux 下安装软件