6

Android 截屏的各种骚操作

 2 years ago
source link: http://www.androidchina.net/9885.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

在实际的应用场景中,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 上就是有一层黑色背景叠加在上面一样。

所以,假设真的需要,直接拿另一个手机拍照吧。

一般设置不允许截屏肯定是有一些考虑的(诸如安全之类的),所以要不要强制获取界面,还是要考虑清楚的。

作者:AndroidTraveler
链接:https://juejin.im/post/5ce4abb2518825332a1eefad
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK