Screen Recording Detection

Android devices are capable of recording their screen. Frequently a recorded screen is also shared elsewhere (similar to screen sharing). Screen recording can pose a security risk, as sensitive information might be leaking from app screens.

Since Android 15, Malwarelytics for Android is able to detect that the screen is being recorded and can be configured to terminate the app in such a case. Info about the detections is then delivered through the MalwarelyticsRaspListener.

The screen recording detection feature is available only on Android 15+. The callbacks are not delivered on older versions of Android regardless of the configuration. Similarly, the manual check methods report valid data only on Android 15+.

Configuration

This feature can be configured during the Malwarelytics initialization in MalwarelyticsConfig.

import { MalwarelyticsConfig } from "react-native-malwarelytics";

const config: MalwarelyticsConfig = {
  android: {
    rasp: {
      screenRecording: {
        action: 'NOTIFY' // or 'EXIT' or 'NO_ACTION'
        // exitUrl: "https://your.exit.url"
      }
    }
  }
}

Available values of action:

Value Description
'NO_ACTION' Indicates that a screen recording will not be automatically detected. And a manual check is not possible.
'NOTIFY' Indicates that a screen recording will be automatically detected and observers will be notified. This is the default action.
'EXIT' Indicates that a screen recording will be automatically detected and the app will be terminated.

List of available parameters:

Parameter Description
exitUrl: string Defines the URL to be opened when the app is terminated because of the automatic detection. Defaults to null.

Usage

After initialization, the screen recording detection feature can be accessed via malwarelytics.rasp. This can be used to register an observer or to trigger a manual screen recording detection check.

Registering an Observer

To receive notifications about screen recording events, you need to implement the optional onScreenRecordingDetected method in your MalwarelyticsRaspListener.

import { Malwarelytics, MalwarelyticsRaspListener, ScreenRecordingDetectionInfo } from "react-native-malwarelytics";

const listener: MalwarelyticsRaspListener = {
    // ... other listener methods
    onScreenRecordingDetected(info: ScreenRecordingDetectionInfo): void {
      console.log(`Screen recording detected: ${JSON.stringify(info)}`)
    }
}

Malwarelytics.sharedInstance.rasp.setRaspListener(listener);

The ScreenRecordingDetectionInfo object contains the following properties:

Property Description
isScreenBeingRecorded: boolean Indicates whether an activity of the app is being recorded.
activityClassName?: string Contains the class name of the activity that is being recorded or that just stopped to be recorded. It is null when the screenVisibility value is NO_DATA.
screenVisibility: ScreenRecordingVisibilityStatus Indicates whether an activity of the app became visible or invisible in a recording.

The ScreenRecordingVisibilityStatus can have the following values:

Value Description
'BECOMES_VISIBLE' An activity of the app becomes visible in a screen recording.
'BECOMES_INVISIBLE' An activity of the app becomes invisible in a screen recording.
'NO_DATA' No activity has ever been visible in a screen recording since the SDK has been initialized. Or the feature is not supported for the current version of Android.

Triggering a Manual Check

The screen recording detection check can be triggered manually. Two methods are available – isScreenBeingRecorded() gives a simple boolean answer, whereas getScreenRecordingDetection() provides more details.

import { Malwarelytics } from "react-native-malwarelytics";

async function checkScreenRecording() {
    const isRecording = await Malwarelytics.sharedInstance.rasp.isScreenBeingRecorded();
    if (isRecording) {
        console.log("Screen is being recorded.");
    }

    const recordingInfo = await Malwarelytics.sharedInstance.rasp.getScreenRecordingDetection();
    console.log("Screen recording details:", recordingInfo);
}
Last updated on Jul 04, 2025 (08:51) View product
Search

develop

Malwarelytics for React Native