当前位置: 首页 > news >正文

[Android]从FLAG_SECURE禁止截屏看surface

在应用中,设置activity的flag为FLAG_SECURE就可以禁止截屏,截屏出来是黑色的,

试验一下,

注意事项

  1. 影响

    • 设置 FLAG_SECURE 标志后,用户将无法对该Activity进行截屏或录制屏幕。
    • 这个标志会影响所有屏幕录制工具,不仅仅是截屏工具。
  2. 适用场景

    • 这个标志适用于需要保护敏感信息的场景,例如银行应用、支付应用等。
  3. 用户体验

    • 用户可能会注意到屏幕录制或截屏功能被禁用,因此在使用这个标志时,最好在应用中提供相应的提示或说明。

完整示例

以下是一个完整的示例,展示了如何在一个简单的Android应用中禁止截屏。

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:padding="16dp"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="This screen cannot be captured or recorded."android:textSize="18sp"android:layout_gravity="center_horizontal"android:layout_marginTop="20dp"/>
</LinearLayout>
MainActivity.java
package com.example.noscreenshot;import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;public class MainActivity extends AppCompatActivity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overrideprotected void onResume() {super.onResume();// 设置 FLAG_SECURE 标志来禁止截屏getWindow().addFlags(android.view.WindowManager.LayoutParams.FLAG_SECURE);}@Overrideprotected void onPause() {super.onPause();// 可选:在不需要禁止截屏时移除 FLAG_SECURE 标志// getWindow().clearFlags(android.view.WindowManager.LayoutParams.FLAG_SECURE);}
}

可以发现,不能截屏了,使用screencap命令也不能截屏,再试验一下scrcpy工具

(https://github.com/Genymobile/scrcpy/releases)

这个和录屏类似,也是黑色的,但是其他的surface是可以看到的,使用分屏显示其他应用,

scrcpy的录屏是创建了一个display,这里可以猜测,系统中(surfaceflinger)对新创建的这个display也进行了surface的合成,而不是画面的复制。


http://www.mrgr.cn/news/64704.html

相关文章:

  • ComfyUI和Photoshop相结合,PS内实现:文生图,图生图,高清放大,局部重绘,面部修复,设计师福音
  • 计算机网络面试题三道之二
  • 低压补偿控制器维修措施
  • Docker篇(基础命令)
  • Windows部署rabbitmq
  • 【深度学习】实验 — 动手实现 GPT【三】:LLM架构、LayerNorm、GELU激活函数
  • 周报_2024/11/3
  • 访问者模式:将操作与对象结构分离的设计模式
  • 插值表达式
  • 提高交换式网络可靠性之STP配置
  • modelscope下载Qwen2.5 72B 模型方法
  • Automattic 和 Matt Mullenweg 要求驳回 WP Engine 诉讼案中的关键索赔
  • GPRS是什么?
  • 嵌入式数据存储小记(bss,data,text,stack,heap)
  • ACIS创建各种基本体,举例说明
  • 使用Kafka构建大规模消息传递系统
  • JAVA开源项目 网上购物商城 计算机毕业设计
  • SAP ABAP开发学习——BADI增强操作步骤示例1
  • vscode makfile编译c程序
  • 创客匠人:打造IP陷入迷茫?20位大咖直播如何破局,实现财富增长
  • java字节码文件与javap的使用
  • Position:定位
  • 通过muduo库函数实现protobuf通信协议
  • 多模态大模型微调实践!PAI+LLaMA Factory搭建AI导游
  • pta题目:字符串的全排列
  • 计算机性能分析的三个模型