Dart 颤振:禁用应用程序的屏幕截图捕获
我正在制作一个颤振应用程序,我需要确保用户无法捕获应用程序的屏幕截图(任何屏幕)。有没有办法在Flutter中实现这一点,或者我需要为Android和IOS编写本机代码Dart 颤振:禁用应用程序的屏幕截图捕获,dart,flutter,Dart,Flutter,我正在制作一个颤振应用程序,我需要确保用户无法捕获应用程序的屏幕截图(任何屏幕)。有没有办法在Flutter中实现这一点,或者我需要为Android和IOS编写本机代码 在Flatter项目的嵌入式android项目目录中找到MainActivity类 将以下导入添加到主活动类:import android.view.WindowManager.LayoutParams 将以下行添加到MainActivity的onCreate方法:getWindow().addFlags(LayoutParam
import android.view.WindowManager.LayoutParams代码>
getWindow().addFlags(LayoutParams.FLAG_SECURE)代码>
import android.view.WindowManager.LayoutParams代码>
getWindow().addFlags(LayoutParams.FLAG_SECURE)代码>
你可以在iOS上听屏幕截图键,当按下组合键时屏幕变黑。你可以在iOS上听屏幕截图键,当按下组合键时屏幕变黑。对我有效的是在MainActivity.java文件中编写以下代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
}
并导入这些包
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.os.Bundle; // required for onCreate parameter
对我有用的是在MainActivity.java文件中编写以下代码。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
}
并导入这些包
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.os.Bundle; // required for onCreate parameter
这适用于iOS。在您的
Runner>AppDelegate.m
中:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (void)applicationWillResignActive:(UIApplication *)application{
self.window.hidden = YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application{
self.window.hidden = NO;
}
@end
这适用于iOS。在您的
Runner>AppDelegate.m
中:
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GeneratedPluginRegistrant registerWithRegistry:self];
// Override point for customization after application launch.
return [super application:application didFinishLaunchingWithOptions:launchOptions];
}
- (void)applicationWillResignActive:(UIApplication *)application{
self.window.hidden = YES;
}
- (void)applicationDidBecomeActive:(UIApplication *)application{
self.window.hidden = NO;
}
@end
通过以下两个步骤可以很容易地防止屏幕截图 我正在使用VS代码 步骤1使用路径
android\app\src\main\kotlin\com\example\auth\u email\mainActivity.kt打开文件“mainActivity.kt”
步骤2添加两行
(a) import android.view.WindowManager.LayoutParams;
(b) getWindow().addFlags(LayoutParams.FLAG_SECURE); in MainActivity: FlutterActivity() section
重新启动应用程序
通过以下两个步骤可以很容易地防止屏幕截图 我正在使用VS代码 步骤1使用路径
android\app\src\main\kotlin\com\example\auth\u email\mainActivity.kt打开文件“mainActivity.kt”
步骤2添加两行
(a) import android.view.WindowManager.LayoutParams;
(b) getWindow().addFlags(LayoutParams.FLAG_SECURE); in MainActivity: FlutterActivity() section
重新启动应用程序
如果您正在使用kotlin 打开MainActivity.kt 在导入末尾添加以下代码
import android.view.WindowManager.LayoutParams
在super.onCreate(savedInstanceState)的末尾添加以下代码
完成。如果您正在使用kotlin 打开MainActivity.kt 在导入末尾添加以下代码
import android.view.WindowManager.LayoutParams
在super.onCreate(savedInstanceState)的末尾添加以下代码
完成了。最简单的方法是使用名为 首先在您的flatter项目的pubspec.yaml文件中导入它的最新版本,然后运行pub-get。然后将下面的代码添加到小部件的initState()方法中,您要为其禁用屏幕截图和屏幕录制
Future<void> secureScreen() async {
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
}
@override
void initState() {
secureScreen();
super.initState();
}
Future secureScreen()异步{
等待FlatterWindowManager.addFlags(FlatterWindowManager.FLAG\u安全);
}
@凌驾
void initState(){
secureScreen();
super.initState();
}
如果要禁用整个应用程序截图,只需在main.dart文件的main()函数中调用securescreen()方法(定义见上文)。最简单的方法是使用名为 首先在您的flatter项目的pubspec.yaml文件中导入它的最新版本,然后运行pub-get。然后将下面的代码添加到小部件的initState()方法中,您要为其禁用屏幕截图和屏幕录制
Future<void> secureScreen() async {
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
}
@override
void initState() {
secureScreen();
super.initState();
}
Future secureScreen()异步{
等待FlatterWindowManager.addFlags(FlatterWindowManager.FLAG\u安全);
}
@凌驾
void initState(){
secureScreen();
super.initState();
}
如果要禁用整个应用程序截图,只需在main.dart文件的main()函数中调用securescreen()方法(定义见上文)。尝试使用
对于android编辑MainActivity.kt
package com.package.app_name
import android.view.WindowManager.LayoutParams
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
window.addFlags(LayoutParams.FLAG_SECURE)
super.configureFlutterEngine(flutterEngine)
}
}
尝试使用
对于android编辑MainActivity.kt
package com.package.app_name
import android.view.WindowManager.LayoutParams
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
window.addFlags(LayoutParams.FLAG_SECURE)
super.configureFlutterEngine(flutterEngine)
}
}
第二期工程
方法1:使用软件包
方法2:
使用kotlin的Android系统
步骤1:使用路径打开文件“mainActivity.kt”
android\app\src\main\kotlin\com\example\auth\u email\MainActivity.kt
步骤2导入库
导入android.view.WindowManager.LayoutParams
import io.flatter.embedding.android.flatterActivity
导入io.flatter.embedded.engine.flatterengine
在主活动课中的第3步
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
window.addFlags(LayoutParams.FLAG_SECURE)
super.configureFlutterEngine(flutterEngine)
}
}
在iOS Swift中:AppDelefate.Swift文件
import UIKit
import Flutter
@UIApplicationMain
@objc class AppDelegate: FlutterAppDelegate {
override func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
GeneratedPluginRegistrant.register(with: self)
return super.application(application, didFinishLaunchingWithOptions: launchOptions)
}
// <Add>
override func applicationWillResignActive(
_ application: UIApplication
) {
self.window.isHidden = true;
}
override func applicationDidBecomeActive(
_ application: UIApplication
) {
self.window.isHidden = false;
}
// </Add>
}
导入UIKit
进口颤振
@UIApplicationMain
@objc类AppDelegate:AppDelegate{
重写func应用程序(
_应用程序:UIApplication,
didFinishLaunchingWithOptions launchOptions:[UIApplication.launchOptions键:任意]?
)->布尔{
GeneratedPluginRegistrant.register(带:self)
return super.application(application,didfishlaunchingwithoptions:launchOptions)
}
//
重写函数应用程序WillResignActive(
_应用程序:UIApplication
) {
self.window.ishiden=true;
}
覆盖函数applicationIDBecomeActive(
_应用程序:UIApplication
) {
self.window.ishiden=false;
}
//
}
用于第二个项目
方法1:使用软件包
方法2:
使用kotlin的Android系统
步骤1:使用路径打开文件“mainActivity.kt”
android\app\src\main\kotlin\com\example\auth\u email\MainActivity.kt
步骤2导入库
导入android.view.WindowManager.LayoutParams
import io.flatter.embedded.android.Flutt