本文公众号「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 截屏的各种骚操作的更多相关文章

  1. Android截屏的几种实现

    Android截屏的几种实现 微信公众号:CodingAndroid CSDN:http://blog.csdn.net/xinpengfei521 最近我们的APP要求需要截屏功能,网上看了看大致有 ...

  2. 【转】Android截屏

     http://blog.csdn.net/xww810319/article/details/17607749 Android截屏浅析 链接:http://blog.sina.com.cn/s/bl ...

  3. android截屏

    截屏是一个常用的操作,经常会有这种需求. 截屏的工具类 package com.fxb.screenshot; import android.app.Activity; import android. ...

  4. Android 截屏与 WebView 长图分享经验总结

    最近在做新业务需求的同时,我们在 Android 上遇到了一些之前没有碰到过的问题,截屏分享. WebView 生成长图以及长图在各个分享渠道分享时图片模糊甚至分享失败等问题,在这过程中踩了很多坑,到 ...

  5. android截屏:保存一个view的内容为图片并存放到SD卡

    项目中偶尔会用到截屏分享,于是就有了下面这个截屏的方法~ 下面得saveImage()方法就是保存当前Activity对应的屏幕所有内容的截屏保存. private void saveImage() ...

  6. Android 截屏检测

    最近项目中新接到一个需求,对手机截屏进行检测并进行后续操作,类似于Snapchat,iOS具有先天优势,因iOS系统提供了相关API!Google无果之后原作者决定再次造轮子,为了持续表达对Rx的敬意 ...

  7. 快速简化Android截屏工作

    1.安装Notepad++v6.9 2.插件管理器里Plugin Manager安装AndroidLogger 3.AndroidLogger里的capture功能抓取Android的当前屏幕截图到w ...

  8. Android手机截屏

    刚开始打算做一个简单的截屏程序时,以为很轻松就能搞定. 在Activity上放一个按钮,点击完成截屏操作,并将数据以图片形式保存在手机中. 动手之前,自然是看书和网上各种查资料.结果发现了解的知识越多 ...

  9. Android开发笔记:安卓程序截屏方法

    1,基于Android SDK的截屏方法 (1)主要就是利用SDK提供的View.getDrawingCache()方法.网上已经有很多的实例了.首先创建一个android project,然后进行L ...

随机推荐

  1. 浅析怎样学好C语言

    今天,我能够自称是一个混IT的人,并能以此谋生,将来大家能一次谋生.都要感谢两个人:克劳德.香农和约翰.冯.诺依曼,是他们发现了全部的数字化信息,不论是一段程序,一封email.一部电影都是用一连串的 ...

  2. 分析Cocos2d-x横版ACT手游源码 1、公共

    直接上代码 不说什么 这一款源码 凝视及多 PublicDef.h 公共头文件 #define NF_PLATFORM 1 //当前版本号(默觉得普通版) //版本号列表 #define NF_PLA ...

  3. Intel的东进与ARM的西征(5)--智慧的大窗口,我们都在画里面

    http://www.36kr.com/p/200168.html 繁华又算得了什么,不过是星尘的崩碎,那一抹青青的灰.公元 79 年,意大利维苏威火山喷发,已然兴盛了 600 年的庞贝古城被完全湮没 ...

  4. PHP-MySQL,PHP-MySQLi,PDO的差异

    PHP-MySQL是PHP操作MySQL数据库最原始的Extension ,PHP-MySQLi的i代表Improvement ,提供了更加高级的功能,就Extension而言,本身也增加了安全性.而 ...

  5. RecyclerViewDemo

    https://github.com/eltld/RecyclerViewDemo

  6. VS2008转VS2013时遇到的问题

    最近我们要把DPM进行行人检测嵌入到我们的项目里,需要一个高级版本的VS,于是我们要把2008转换成2013,至于为什么没有换成最高级的版本,可能担心会遇到有更多的麻烦吧,毕竟我们的DPM源码是在20 ...

  7. startActivity、 startActivityForResult 、广播的使用

    前言 近期忙着跟项目.好久没有写文字了.今天一个群里面的童鞋问到一个关于不同界面间传值的问题,借这个背景,写一段关于" startActivity. startActivityForResu ...

  8. MTK 手机芯片 2014 Roadmap

    注:其中 A53 架构的是 64 位处理器. MT6733 魅蓝 MT6752 魅族 note 联通/移动版 MT6595 魅族 MX4

  9. C++类中使用new及delete小例子(续)

    在该示例中我们显式定义了复制构造函数来代替默认复制构造函数, 在该复制构造函数的函数体内, 不是再直接将源对象所申请空间的地址赋值给被初始化的对象, 而是自己独立申请一处内存后再将源对象的属性复制过来 ...

  10. To verify Hadoop releases using GPG

    To verify Hadoop releases using GPG http://hadoop.apache.org/releases.html To verify Hadoop releases ...