有没有办法在 Xamarin Forms 中禁用屏幕截图?

问题描述 投票:0回答:3

我希望我的 Xamarin Forms 应用程序禁用屏幕截图。有办法这样做吗? 注意:我找到了纯 Android 和 iOS 版本的解决方案,但我需要 Xamarin 解决方案。如果有办法以某种方式嵌入纯 Android 和 iOS 解决方案,我也接受。 谢谢:)

xamarin xamarin.forms screenshot
3个回答
5
投票

没有100%有效的方法来阻止用户截图/录制。

您可以做一些事情,但没有一个可以保证用户没有这样做。

我总是需要在 Android 和 iOS 中实现这一点。

请参阅适用于 Android 的 thisthis。 对于 iOs,请参阅thisthis


0
投票

您可以在 MainActivity.cs (Xamarin) 上添加此行来禁用屏幕截图:

protected override void OnCreate(Bundle savedInstanceState)
{
   ...
   ...
   Window.SetFlags(WindowManagerFlags.Secure, WindowManagerFlags.Secure);
}

0
投票

我们无法停止截图。我们可以将所有屏幕截图设为黑屏。在AppDelegate.cs下添加

    public override UIWindow Window { get; set; }

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
              Window = new UIWindow(frame: UIScreen.MainScreen.Bounds);
                var initialViewController = new SplashViewController();
                Window.RootViewController = initialViewController;
                Window.MakeKeyAndVisible();
               MakeSecureWindow();
                return base.FinishedLaunching(app, options);
            }


public void MakeSecureWindow()
        {
            var field = new UITextField();
            field.SecureTextEntry = true;
            Window.AddSubview(field);
            field.CenterYAnchor.ConstraintEqualTo(Window.CenterYAnchor).Active = true;
            field.CenterXAnchor.ConstraintEqualTo(Window.CenterXAnchor).Active = true;
            Window.Layer.SuperLayer?.AddSublayer(field.Layer);
            field.Layer.Sublayers.LastOrDefault().AddSublayer(Window.Layer);
        }
© www.soinside.com 2019 - 2024. All rights reserved.