禁止截屏

场景

APP某些界面不希望用户截屏。

API

简介

获window对象添FLAG_SECURE。window对象可Activity.getWindow()获,也可Dialog.getWindow()获。不同方式所获Window对象禁用截屏区不同。FLAG_SECURE是WindowManager.LayoutParams一属性,标记当前window安全,禁止非安全操作。

  • 阻止屏幕截图。
  • Recent apps(任务切换界面)中只显应用名称和图标,不显内容。
  • Google App的Now on tap功能不会去分析你的页面内容。
原型
getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE);
### 如何在 UniApp 中实现禁止截屏功能 #### 方法一:通过 `app.vue` 文件全局禁用 可以在项目的根组件 `app.vue` 中设置,在应用启动时调用接口来禁用截屏和录屏的功能。具体做法是在 `<script>` 部分定义一个函数用于配置屏幕捕获权限,并利用生命周期钩子 `onMounted()` 来执行该操作。 ```javascript import { onMounted } from 'vue'; export default { setup() { const restrictScreenshot = () => { uni.setUserCaptureScreen({ enable: false, success(res) { console.log('全局截屏录屏功能已禁用'); }, fail(err) { console.error('全局禁用截屏录屏功能失败', err); } }); }; onMounted(() => { restrictScreenshot(); }); return {}; } } ``` 此方式适用于希望一次性为整个应用程序设定统一行为的情况[^1]。 #### 方法二:针对 Android 设备特定处理 对于仅需对安卓平台生效的情形,可在 HTML 页面加载完成后监听 `plusready` 事件,之后判断操作系统名称并作出相应调整: ```html <script type="text/javascript"> document.addEventListener('plusready', function(){ let osname = plus.os.name; if(osname === "Android"){ var activity = plus.android.runtimeMainActivity(); plus.android.invoke( plus.android.invoke(activity,"getWindow"), "addFlags", 0x00002000 // FLAG_SECURE flag to prevent screenshotting ); } }); </script> ``` 上述代码片段展示了如何向窗口对象添加安全标志位以阻止截图动作的发生[^3]。 这两种方案都可以有效地防止用户意外或故意保存界面图像资料的行为,开发者可以根据实际需求选择合适的方式实施保护措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

snpmyn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值