android禁止录屏功能,react-native(安卓)项目中禁止截屏与录屏
一、整个项目中禁止截屏与录屏
在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(安卓)项目中禁止截屏与录屏相关推荐
- React Native Expo 项目中添加动画音效
目录 背景 实现 代码 效果 参考链接 背景 最近做一个学校作业,用 React Native 写一个游戏.游戏中涉及一个物体下落的动效,是用 React Native 的 Animated API ...
- android 网络时区 错误,React native 安卓机器上调试代码报错:网络请求出错TypeError: Network request failed...
React native 安卓机器上调试代码报错:网络请求出错TypeError: Network request failed 安卓机器 usb连接调试 报错信息 TypeError: Networ ...
- React Native 安卓环境搭建
基础环境 必须安装的依赖有:Node.js.Yarn 和 React Native 脚手架.这是运行 RN 的基础 Node.js Node.js 的版本应大于等于 12,推荐安装 LTS 版本(去N ...
- react native 安卓(特别是小米手机)全面屏是否开虚拟按键的适配
react native 安卓(特别是小米手机)全面屏是否开虚拟按键的适配 做rn蛮久了,遇到的坑无数,谢谢大家带我爬过的坑,这次我也来分享一下,希望帮助到有需要的人! 大家先看先后效果对比: 没开虚 ...
- react native新建项目运行在安卓设备上
最近编辑于2018年6月29日 一. 根据http://facebook.github.io/react-native/docs/getting-started.html或者https://react ...
- Android之Windows下搭建React Native Android开发环境(差不多搞了一天)
Android之Windows下搭建React Native Android开发环境 穷逼买不起mac,但是他们都说React Native Android只能在mac下面 ...
- 如何在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 ...
- React Native 开源项目汇总
最近闲来无事,学习了React Native开发Android APP,自我感觉RN APP的效果和Native APP比还是蛮不错,以下是找到的一些优秀源码,仅供学习参考... React Nati ...
- [react] 有在项目中使用过Antd吗?说说它的好处
[react] 有在项目中使用过Antd吗?说说它的好处 They gave every user a big surprise on Christmas Holiday. 个人简介 我是歌谣,欢迎和 ...
最新文章
- 2022-2028年中国SIP芯片行业市场前景预测及投资战略研究报告
- AC日记——中庸之道 codevs 2021
- css3 -webkit-filter
- 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
- 终极解决办法rvct Cannot obtain license for Compiler (feature compiler) with license version = 3.1...
- 设置webstorm实时预览看这一篇就够了,5分钟解决!!
- 抖音新特效:蚂蚁呀嘿安卓教程
- struts框架的原理和应用_分布式开源调度框架TBSchedule原理与应用
- Qt5 自创简单音乐视频播放器(基础版)
- UOS 虚拟打印到 PDF 文件
- 94页5万字市级应急平台建设方案
- Daz3d:如何使用景深
- 双创项目_宫颈癌风险智能检测(2)
- 设计师和程序员必备5个超赞的配色工具,从此配色无忧!
- 华为手机自带浏览器不支持 ES6 语法
- 越来越觉得马克思主义原理非常深邃
- [Linux]关于在国产操作系统上安装Oracle数据库
- 云原生周刊 | 使用 ChatGPT 协助解决 Prometheus 告警
- 前端vue使用XXTEA进行对称加解密。同时对比rsa算法和xxtea算法的优缺点。
- 机理模型和非机理模型