![]() |
VOOZH | about |
dotnet add package Plugin.Maui.ScreenSecurity --version 1.2.3
NuGet\Install-Package Plugin.Maui.ScreenSecurity -Version 1.2.3
<PackageReference Include="Plugin.Maui.ScreenSecurity" Version="1.2.3" />
<PackageVersion Include="Plugin.Maui.ScreenSecurity" Version="1.2.3" />Directory.Packages.props
<PackageReference Include="Plugin.Maui.ScreenSecurity" />Project file
paket add Plugin.Maui.ScreenSecurity --version 1.2.3
#r "nuget: Plugin.Maui.ScreenSecurity, 1.2.3"
#:package Plugin.Maui.ScreenSecurity@1.2.3
#addin nuget:?package=Plugin.Maui.ScreenSecurity&version=1.2.3Install as a Cake Addin
#tool nuget:?package=Plugin.Maui.ScreenSecurity&version=1.2.3Install as a Cake Tool
👁 NuGet
👁 NuGet Downloads
👁 Buy Me a Coffee
Plugin.Maui.ScreenSecurity provides a seamless solution for preventing content exposure, as well as blocking screenshots and recordings within your .NET MAUI application
| Platform | Version |
|---|---|
| .Net MAUI Android | API 21+ |
| .Net MAUI iOS. | iOS 14.2+ |
| Windows | 10.0.17763+ |
ThrowErrors property to allow users to catch exceptions with the new error handling implementation.(yyyy-MM-dd).Click here to see the full Changelog!
Plugin.Maui.ScreenSecurity is available via NuGet, grab the latest package and install it on your solution:
dotnet add package Plugin.Maui.ScreenSecurity --version 1.2.3
Initialize the plugin in your MauiProgram class:
using Plugin.Maui.ScreenSecurity;
public static MauiApp CreateMauiApp()
{
var builder = MauiApp.CreateBuilder();
builder
.UseMauiApp<App>()
.ConfigureFonts(fonts =>
{
fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
})
.UseScreenSecurity();
return builder.Build();
}
In your Android.manifest file (Platforms/Android) add the following permission:
<uses-permission android:name="android.permission.DETECT_SCREEN_CAPTURE" />
It's important to acknowledge that preventing users from taking screenshots or recordings of your app can be a challenging task and achieving complete prevention may not be feasible. It's worth noting that no method can entirely eliminate the possibility of your screen being captured through another physical device or a potential breach in the OS.
👉 It's also important to consider the impact on user experience when implementing any of these methods and striking a balance with the security concerns of your app.
If you are still using version 1.0.0, please refer to the Legacy docs for the previous version.
The new unified API includes two methods: ActivateScreenSecurityProtection() and DeactivateScreenSecurityProtection(), with optional parameters applicable only to the iOS platform. It also provides two properties: IsProtectionEnabled, which checks if protection is active, and the ScreenCaptured event handler, which notifies when a screenshot is taken or the screen is recorded.
void ActivateScreenSecurityProtection();
When you activate this protection, your app's content will be safeguarded when it's sent to the Recents screen or the App Switcher. This helps ensure that sensitive information won't be exposed.
void ActivateScreenSecurityProtection(bool blurScreenProtection, bool preventScreenshot, bool preventScreenRecording);
This method is similar to the previous method, but with parameters to change the default values in iOS:
blurScreenProtection: Enable/disable screen blurring to prevent content visibility in the background. True by default.preventScreenshot: Decide whether users can take screenshots of your app. True by default.preventScreenRecording: Control whether users can record the screen while using your app. True by default.void ActivateScreenSecurityProtection(ScreenProtectionOptions screenProtectionOptions);
This method is similar to the original method, but takes a ScreenProtectionOptions parameter. This allows you to further customize the screen protection by specifying either a Color or an Image, along with the the screenshot and screen recording protection for iOS devices.
Note: If you set both Color and Image, it will only apply the one you declared first.
ScreenProtectionOptions properties:
Color: Represents a color in the form of a hexadecimal string and can be passed as an argument to customize the color layer. It supports formats such as #RGB, #RGBA, #RRGGBB, or #RRGGBBAA. Empty by default.Image: The name of the image file along with its extension. In order to utilize this property, please follow these steps:
Resources\Images folder.MauiImage, consider changing the build action to Embedded resource to ensure proper functionality.PreventScreenshot: Decide whether users can take screenshots of your app. True by default.PreventScreenRecording: Control whether users can record the screen while using your app. True by default.void DeactivateScreenSecurityProtection();
This method deactivates all screen security protection.
bool IsProtectionEnabled { get; }
This bool checks if screen protection is enabled.
ThrowErrors
This will allow users to catch exceptions with the new error handling implementation.
event EventHandler<EventArgs>? ScreenCaptured;
The event handler is triggered when the screen is captured, either through a screenshot or recording on Android and iOS, but only for screenshots on Windows.
public partial class MainPage : ContentPage
{
private readonly IScreenSecurity _screenSecurity;
public MainPage(IScreenSecurity screenSecurity)
{
InitializeComponent();
_screenSecurity = screenSecurity;
// Set to true if you want to catch exceptions.
_screenSecurity.ThrowErrors = true;
}
protected override void OnAppearing()
{
base.OnAppearing();
// Check if screen security protection is not enabled
if (!_screenSecurity.IsProtectionEnabled)
{
try
{
// Activate the screen security protection with default settings
_screenSecurity.ActivateScreenSecurityProtection();
}
catch (Exception ex)
{
// Handle the exception here...
}
}
// Attach to the ScreenCaptured event handler
_screenSecurity.ScreenCaptured += OnScreenCaptured;
/*
// For changing iOS options, follow one of the next examples:
// Example 1: Customize with a specific color
var screenProtectionOptions = new ScreenProtectionOptions
{
HexColor = "#6C4675",
PreventScreenshot = true,
PreventScreenRecording = false
};
// Example 2: Customize with an image
var screenProtectionOptions = new ScreenProtectionOptions
{
Image = "protection_bg.png"
PreventScreenshot = false,
PreventScreenRecording = true
};
_screenSecurity.ActivateScreenSecurityProtection(screenProtectionOptions);
*/
}
protected override void OnDisappearing()
{
_screenSecurity.DeactivateScreenSecurityProtection();
// Detach from the ScreenCaptured event handler
_screenSecurity.ScreenCaptured -= OnScreenCaptured;
base.OnDisappearing();
}
private async void OnScreenCaptured(object sender, EventArgs e)
{
string title = "ScreenSecuritySample";
string message = "Screen was captured by screenshot or recording.";
await Shell.Current.DisplayAlert(title, message, "Ok");
}
}
Refer to the samples folder for a detailed implementation of this plugin for both Maui and Blazor, which will give you a complete understanding of its usage.
Feel free to open an Issue if you encounter any bugs or submit a PR to contribute improvements or fixes. Your contributions are greatly appreciated.
Plugin.Maui.ScreenSecurity is licensed under MIT license.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-android34.0 net8.0-android34.0 is compatible. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-ios18.0 net8.0-ios18.0 is compatible. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net8.0-windows10.0.19041 net8.0-windows10.0.19041 is compatible. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-android35.0 net9.0-android35.0 is compatible. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-ios18.0 net9.0-ios18.0 is compatible. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net9.0-windows10.0.19041 net9.0-windows10.0.19041 is compatible. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 4 NuGet packages that depend on Plugin.Maui.ScreenSecurity:
| Package | Downloads |
|---|---|
|
Cyber.FrameworkNet8
Phiên bản CyberPlus phát triển trên nền tảng .Net Maui |
|
|
Cyber.FrameworkNet8_FutaHaSon
Phiên bản FTHS khách hàng phát triển trên nền tảng .Net Maui |
|
|
Cyber.FrameworkNet8_FTHS_NB
Phiên bản FTHS nội bộ phát triển trên nền tảng .Net Maui |
|
|
Cyber.MauiNet8
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 1.2.3 | 25,788 | 10/8/2025 | |
| 1.2.2 | 15,753 | 6/2/2025 | |
| 1.2.1 | 584 | 5/25/2025 | |
| 1.2.0 | 23,753 | 10/14/2024 | |
| 1.1.8-beta | 8,106 | 5/25/2024 | |
| 1.1.7-beta | 16,719 | 5/19/2024 | |
| 1.1.6 | 16,395 | 3/18/2024 | |
| 1.1.5 | 13,469 | 10/24/2023 | |
| 1.1.0 | 3,398 | 7/21/2023 | |
| 1.0.7-beta | 287 | 7/18/2023 | |
| 1.0.6-beta | 291 | 7/18/2023 | |
| 1.0.5-beta | 338 | 7/17/2023 | 1.0.5-beta is deprecated because it has critical bugs. |
| 1.0.4-beta | 284 | 7/12/2023 | |
| 1.0.3-beta | 297 | 7/9/2023 | |
| 1.0.0 | 996 | 5/19/2023 |