我遇到过一些专门针对 ios 和 Android 的解决方案,以防止屏幕捕获和截屏。但是如何在 React Native 中禁用屏幕捕获?
最佳答案
安卓
在/android/app/src/main/java/com/{Project_Name}/MainActivity.java
您可以添加以下行。通过setFlag FLAG_SECURE
防止截屏,以下面的代码为例:
import android.os.Bundle;
import android.view.WindowManager;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
}
稍后当你想移除安全标志时
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
iOS
覆盖屏幕在AppDelegate.m
中,举个例子:
- (void)applicationWillResignActive:(UIApplication *)application {
// fill screen with our own colour
UIView *colourView = [[UIView alloc]initWithFrame:self.window.frame];
colourView.backgroundColor = [UIColor whiteColor];
colourView.tag = 1234;
colourView.alpha = 0;
[self.window addSubview:colourView];
[self.window bringSubviewToFront:colourView];
// fade in the view
[UIView animateWithDuration:0.5 animations:^{
colourView.alpha = 1;
}];
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
// grab a reference to our coloured view
UIView *colourView = [self.window viewWithTag:1234];
// fade away colour view from main view
[UIView animateWithDuration:0.5 animations:^{
colourView.alpha = 0;
} completion:^(BOOL finished) {
// remove when finished fading
[colourView removeFromSuperview];
}];
}
关于android - 在 React Native 应用程序中禁用屏幕捕获/屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54998051/