Android 截屏的各种骚操作
本文公众号「AndroidTraveler」首发。
背景
在实际的应用场景中,Android 手机的截屏其实是很普遍的。
比如说 PPT 演示,比如说技术博客图文并茂讲解。
因此懂得 Android 手机截屏的各种操作就显得尤为重要。
使用 AndroidStudio 自带的截屏工具
在 Logcat 选项卡的左边工具栏有个拍照图标,点击一下就可以了。
点击之后会弹出下面框,上面有一些操作可以点击,可以看到分别是重新截图、往左旋转、往右旋转、拷贝到粘贴板。
使用 Vysor
如果你使用的浏览器是 Chrome 浏览器,那么直接添加 Vysor 扩展程序即可。
使用 Vysor 要求手机端也要安装,但是你启动电脑端的 Vysor,会自动在你手机进行安装。
可以看到截屏也是点击拍照按钮即可。
使用 adb 命令行
执行命令
adb shell /system/bin/screencap -p /sdcard/tmp.png
其中最后一个字符串是路径,你需要指定你截取的图片保存的位置。
在上面的演示里面,是 /sdcard/tmp.png。
接着把手机保存的截图 pull 到桌面端。
执行命令
adb pull /sdcard/tmp.png .
其中最后一个字符串是你桌面端的路径,你需要指定手机拉取的图片保存在客户端哪个位置。
在上面的演示里面,是当前目录。
使用系统截图工具
这个不用多说了,直接使用系统的截图工具进行截图即可。默认会保存到相册。
你以为到这里就结束了?
真正背景
在上述背景的前提下,当我用尽上面的截图方法时,每个方法对应的结果如下:
第一个:直接把我 AndroidStudio 的截图工具搞奔了,点击提示错误。
第二个:Vysor 直接黑屏。
第三个:adb pull 出来的图片大小为 0 KB。
第四个:提示不可截屏。
其实前面三种方法不行我们觉得还好,但是最后系统这种方法不行。那就要考虑是不是系统层面做了处理。
代码设置不允许截屏
在 Android 项目里面,通过设置可以让界面不允许执行截屏操作。
设置也很简单,就是在 Activity 里面增加下面语句即可:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
那么,如何解决呢?
自己的 APP
如果是自己的 APP,那么很简单,直接给代码临时加个注释就可以了。
其他 APP
可能你会考虑既然是给 Activity 设置禁止截屏标志,那么我另外开一个应用,然后给 Activity 设置透明,是不是就可以起到间接的截屏操作?
答案是不行的。这边实际测试验证了,只要禁止截屏的界面可见,就算它的 onPause 回调了,也是不可以截屏的。表现在 Vysor 上就是有一层黑色背景叠加在上面一样。
所以,假设真的需要,直接拿另一个手机拍照吧。
思考
一般设置不允许截屏肯定是有一些考虑的(诸如安全之类的),所以要不要强制获取界面,还是要考虑清楚的。

Android 截屏的各种骚操作的更多相关文章
- Android截屏的几种实现
Android截屏的几种实现 微信公众号:CodingAndroid CSDN:http://blog.csdn.net/xinpengfei521 最近我们的APP要求需要截屏功能,网上看了看大致有 ...
- 【转】Android截屏
http://blog.csdn.net/xww810319/article/details/17607749 Android截屏浅析 链接:http://blog.sina.com.cn/s/bl ...
- android截屏
截屏是一个常用的操作,经常会有这种需求. 截屏的工具类 package com.fxb.screenshot; import android.app.Activity; import android. ...
- Android 截屏与 WebView 长图分享经验总结
最近在做新业务需求的同时,我们在 Android 上遇到了一些之前没有碰到过的问题,截屏分享. WebView 生成长图以及长图在各个分享渠道分享时图片模糊甚至分享失败等问题,在这过程中踩了很多坑,到 ...
- android截屏:保存一个view的内容为图片并存放到SD卡
项目中偶尔会用到截屏分享,于是就有了下面这个截屏的方法~ 下面得saveImage()方法就是保存当前Activity对应的屏幕所有内容的截屏保存. private void saveImage() ...
- Android 截屏检测
最近项目中新接到一个需求,对手机截屏进行检测并进行后续操作,类似于Snapchat,iOS具有先天优势,因iOS系统提供了相关API!Google无果之后原作者决定再次造轮子,为了持续表达对Rx的敬意 ...
- 快速简化Android截屏工作
1.安装Notepad++v6.9 2.插件管理器里Plugin Manager安装AndroidLogger 3.AndroidLogger里的capture功能抓取Android的当前屏幕截图到w ...
- Android手机截屏
刚开始打算做一个简单的截屏程序时,以为很轻松就能搞定. 在Activity上放一个按钮,点击完成截屏操作,并将数据以图片形式保存在手机中. 动手之前,自然是看书和网上各种查资料.结果发现了解的知识越多 ...
- Android开发笔记:安卓程序截屏方法
1,基于Android SDK的截屏方法 (1)主要就是利用SDK提供的View.getDrawingCache()方法.网上已经有很多的实例了.首先创建一个android project,然后进行L ...
随机推荐
- Deleting array elements in JavaScript - delete vs splice
javascript 数组中删除元素用 array.splice(start, deleteCount);这个方法. ----------------------------------------- ...
- 小老虎CSDN博客流量分析
小老虎CSDN博客流量分析 一.分析的博客对象 http://blog.csdn.net/littletigerat 二.分析的时间节点 2014年7月10日星期四 三.PV.UV以及IP值 wa ...
- Vue 之 npm 及 安装的包
1 npm相关 1.1 npm 是 基于Node.js 的,所以要先安装Node.js 在浏览器地址栏输入https://nodejs.org/en/, 进入Node.js官网后,点击下载左边的稳定 ...
- Golang 现有的哲学中,要求你尽量手工处理所有的错误返回
更优雅的 Golang 错误处理 - Go语言中文网 - Golang中文社区 https://studygolang.com/articles/9407
- gitlab merge过程
基本步骤如下: 以我的分支为例 1.创建本地分支,命令 git checkout -b liuping_develop2.创建好分支后提交到远程 ,命令 git push origin liuping ...
- vscode部分文件夹无法打开
vscode部分文件夹无法打开,无法正常显示 解决方案:关闭该IDE.找到C:\Users\XX\AppData\Roaming\Code,将Code文件夹删除.重新打开vsCode,即可恢复.但是以 ...
- HDFS运维和优化
常见问题 下面列举HDFS运行过程中可能出现的常见问题及解决方法,这些问题一般都会在日志中出现的相应的记录.Incompatible clusterIDs in … :namenode cluster ...
- 大整数分解质因数(Pollard rho算法)
#include <iostream> #include <cstring> #include <cstdlib> #include <stdio.h> ...
- SDUT OJ 1598 周游列国
周游列国 Time Limit: 1000ms Memory limit: 32768K 有疑问?点这里^_^ 题目描述 大家都知道孔子吧,春秋战国时候的一个老头儿.当时出国还不用护照,所以他经 ...
- HDU2732 Leapin' Lizards —— 最大流、拆点
题目链接:https://vjudge.net/problem/HDU-2732 Leapin' Lizards Time Limit: 2000/1000 MS (Java/Others) M ...