一、整个项目中禁止截屏与录屏

在android/app/src/main/java/com/your-app-name/MainActivity.java文件中的onCreate方法中添加如下代码即可

import android.view.WindowManager; //添加导入WindowManager代码

...

@Override

protected void onCreate(Bundle savedInstanceState) {

SplashScreen.show(this);

super.onCreate(savedInstanceState);

getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE); //添加禁止截屏代码

}

...

二、个别页面禁止截屏

1、创建一个原生模块

创建一个新的Java类并命名为FlagSecureModule.java,放置到android/app/src/main/java/com/your-app-name/目录下,其具体代码如下:

package com.your-app-name;//这里写入自己项目名称

import android.util.Log;

import android.widget.Toast;

import android.view.WindowManager;

import com.facebook.react.bridge.ReactApplicationContext;

import com.facebook.react.bridge.ReactContextBaseJavaModule;

import com.facebook.react.bridge.ReactMethod;

import java.util.List;

public class FlagSecureModule extends ReactContextBaseJavaModule {

FlagSecureModule(ReactApplicationContext reactContext) {

super(reactContext);

}

@Override

public String getName() {

return "FlagSecure";//标记这个模块,在JavaScript中通过NativeModules.ToastExample访问到这个模块

}

@ReactMethod

public void setFlag() {

//Toast.makeText(getReactApplicationContext(), "setFlag", Toast.LENGTH_SHORT).show();

getCurrentActivity().runOnUiThread(new Runnable() {

@Override

public void run() {

getCurrentActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,

WindowManager.LayoutParams.FLAG_SECURE); // 禁止截屏

}

});

}

@ReactMethod

public void clearFlag() {

//Toast.makeText(getReactApplicationContext(), "clearFlag", Toast.LENGTH_SHORT).show();

getCurrentActivity().runOnUiThread(new Runnable() {

@Override

public void run() {

getCurrentActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); // 禁止截屏

}

});

}

}

2、注册模块

创建一个新的Java类并命名为CustomFlagSecurePackage.java,放置到android/app/src/main/java/com/your-app-name/目录下,其具体代码如下:

package com.your-app-name;//这里写入自己项目名称

import com.facebook.react.ReactPackage;

import com.facebook.react.bridge.NativeModule;

import com.facebook.react.bridge.ReactApplicationContext;

import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;

import java.util.Collections;

import java.util.List;

public class CustomFlagSecurePackage implements ReactPackage {

@Override

public List createViewManagers(ReactApplicationContext reactContext) {

return Collections.emptyList();

}

@Override

public List createNativeModules(

ReactApplicationContext reactContext) {

List modules = new ArrayList<>();

modules.add(new FlagSecureModule(reactContext));

return modules;

}

}

这个package需要在MainApplication.java文件的getPackages方法中提供。具体路径是: android/app/src/main/java/com/your-app-name/MainApplication.java.

// MainApplication.java

...

import com.maintainapp.CustomFlagSecurePackage; //

...

@Override

protected List getPackages() {

return Arrays.asList(

new MainReactPackage(),

...

new CustomFlagSecurePackage()// 添加这行

);

}

}

3、在js中使用

在你想要禁止截屏的页面添加如下代码

import { NativeModules } from 'react-native';

...

componentDidMount() {

NativeModules.FlagSecure.setFlag();//禁止截屏

}

componentWillUnmount() {

NativeModules.FlagSecure.clearFlag();//取消截屏禁止

}

android禁止录屏功能,react-native(安卓)项目中禁止截屏与录屏相关推荐

  1. React Native Expo 项目中添加动画音效

    目录 背景 实现 代码 效果 参考链接 背景 最近做一个学校作业,用 React Native 写一个游戏.游戏中涉及一个物体下落的动效,是用 React Native 的 Animated API ...

  2. android 网络时区 错误,React native 安卓机器上调试代码报错:网络请求出错TypeError: Network request failed...

    React native 安卓机器上调试代码报错:网络请求出错TypeError: Network request failed 安卓机器 usb连接调试 报错信息 TypeError: Networ ...

  3. React Native 安卓环境搭建

    基础环境 必须安装的依赖有:Node.js.Yarn 和 React Native 脚手架.这是运行 RN 的基础 Node.js Node.js 的版本应大于等于 12,推荐安装 LTS 版本(去N ...

  4. react native 安卓(特别是小米手机)全面屏是否开虚拟按键的适配

    react native 安卓(特别是小米手机)全面屏是否开虚拟按键的适配 做rn蛮久了,遇到的坑无数,谢谢大家带我爬过的坑,这次我也来分享一下,希望帮助到有需要的人! 大家先看先后效果对比: 没开虚 ...

  5. react native新建项目运行在安卓设备上

    最近编辑于2018年6月29日 一. 根据http://facebook.github.io/react-native/docs/getting-started.html或者https://react ...

  6. Android之Windows下搭建React Native Android开发环境(差不多搞了一天)

    Android之Windows下搭建React Native Android开发环境               穷逼买不起mac,但是他们都说React Native Android只能在mac下面 ...

  7. 如何在React Native和Firebase中设置Google登录

    Google sign-in is a great login feature to offer to your app's users. It makes it easier for them to ...

  8. React Native 开源项目汇总

    最近闲来无事,学习了React Native开发Android APP,自我感觉RN APP的效果和Native APP比还是蛮不错,以下是找到的一些优秀源码,仅供学习参考... React Nati ...

  9. [react] 有在项目中使用过Antd吗?说说它的好处

    [react] 有在项目中使用过Antd吗?说说它的好处 They gave every user a big surprise on Christmas Holiday. 个人简介 我是歌谣,欢迎和 ...

最新文章

  1. 2022-2028年中国SIP芯片行业市场前景预测及投资战略研究报告
  2. AC日记——中庸之道 codevs 2021
  3. css3 -webkit-filter
  4. 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  5. 终极解决办法rvct Cannot obtain license for Compiler (feature compiler) with license version = 3.1...
  6. 设置webstorm实时预览看这一篇就够了,5分钟解决!!
  7. 抖音新特效:蚂蚁呀嘿安卓教程
  8. struts框架的原理和应用_分布式开源调度框架TBSchedule原理与应用
  9. Qt5 自创简单音乐视频播放器(基础版)
  10. UOS 虚拟打印到 PDF 文件
  11. 94页5万字市级应急平台建设方案
  12. Daz3d:如何使用景深
  13. 双创项目_宫颈癌风险智能检测(2)
  14. 设计师和程序员必备5个超赞的配色工具,从此配色无忧!
  15. 华为手机自带浏览器不支持 ES6 语法
  16. 越来越觉得马克思主义原理非常深邃
  17. [Linux]关于在国产操作系统上安装Oracle数据库
  18. 云原生周刊 | 使用 ChatGPT 协助解决 Prometheus 告警
  19. 前端vue使用XXTEA进行对称加解密。同时对比rsa算法和xxtea算法的优缺点。
  20. 机理模型和非机理模型

热门文章

  1. 投资 4 -- 高送转行情的真正玩法
  2. 看了淘宝代销(分销)的结果
  3. 青少年软件编程C++一级题库(1-10)
  4. 医学影像信息系统设计方案
  5. 哈哈日语入门:日语中浊音变的3条规律
  6. R语言与区间估计学习笔记
  7. 聚焦无障碍阅读,福昕捐出2000套福昕高级PDF编辑器
  8. SLAMTEC—思岚科技把国内服务机器人带出国门
  9. SLAMTEC-思岚科技新品发布|CSITF第二波预告震撼来袭,内含RPLIDAR T1参数曝光
  10. 大数据可视化案例:360骗子地图