diff --git a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
index 8c0c6d6..9827fb6 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/CallFragment.java
@@ -412,6 +412,11 @@
             }
         }
 
+        if (presenter.setBlockRecordStatus()) {
+            binding.videoSurface.setSecure(true);
+            getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
+        }
+
         binding.videoSurface.getHolder().setFormat(PixelFormat.RGBA_8888);
         binding.videoSurface.getHolder().addCallback(new SurfaceHolder.Callback() {
             @Override
diff --git a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
index 4084b6c..d25c948 100644
--- a/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/fragments/ConversationFragment.java
@@ -48,6 +48,7 @@
 import android.view.MenuItem;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
 import android.view.inputmethod.EditorInfo;
 import android.widget.ImageView;
 import android.widget.RelativeLayout;
@@ -331,6 +332,10 @@
         if (animator != null)
             animator.setSupportsChangeAnimations(false);
         binding.histList.setAdapter(mAdapter);
+
+        if (presenter.isRecordingBlocked()) {
+            getActivity().getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
+        }
     }
 
     @Override
diff --git a/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java b/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
index c8924f5..f459964 100644
--- a/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
+++ b/ring-android/app/src/main/java/cx/ring/services/SharedPreferencesServiceImpl.java
@@ -54,6 +54,7 @@
     private static final String PREF_PERSISTENT_NOTIFICATION = "persistent_notif";
     private static final String PREF_SHOW_TYPING = "persistent_typing";
     private static final String PREF_SHOW_READ = "persistent_read";
+    private static final String PREF_BLOCK_RECORD = "persistent_block_record";
     private static final String PREF_HW_ENCODING = "video_hwenc";
     public static final String PREF_BITRATE = "video_bitrate";
     public static final String PREF_RESOLUTION = "video_resolution";
@@ -80,6 +81,7 @@
         edit.putBoolean(PREF_PERSISTENT_NOTIFICATION, settings.isAllowPersistentNotification());
         edit.putBoolean(PREF_SHOW_TYPING, settings.isAllowTypingIndicator());
         edit.putBoolean(PREF_SHOW_READ, settings.isAllowReadIndicator());
+        edit.putBoolean(PREF_BLOCK_RECORD, settings.isRecordingBlocked());
         edit.apply();
     }
 
@@ -97,6 +99,7 @@
         settings.setAllowPersistentNotification(appPrefs.getBoolean(PREF_PERSISTENT_NOTIFICATION, false));
         settings.setAllowTypingIndicator(appPrefs.getBoolean(PREF_SHOW_TYPING, true));
         settings.setAllowReadIndicator(appPrefs.getBoolean(PREF_SHOW_READ, true));
+        settings.setBlockRecordIndicator(appPrefs.getBoolean(PREF_BLOCK_RECORD, false));
         return settings;
     }
 
diff --git a/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java b/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java
index fe28344..5abcd9b 100644
--- a/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java
+++ b/ring-android/app/src/main/java/cx/ring/settings/SettingsFragment.java
@@ -100,6 +100,7 @@
         binding.settingsPersistNotification.setOnCheckedChangeListener(save);
         binding.settingsTyping.setOnCheckedChangeListener(save);
         binding.settingsRead.setOnCheckedChangeListener(save);
+        binding.settingsBlockRecord.setOnCheckedChangeListener(save);
 
         binding.settingsVideoLayout.setOnClickListener(v -> {
             HomeActivity activity = (HomeActivity) getActivity();
@@ -153,6 +154,7 @@
         newSettings.setAllowPersistentNotification(binding.settingsPersistNotification.isChecked());
         newSettings.setAllowTypingIndicator(binding.settingsTyping.isChecked());
         newSettings.setAllowReadIndicator(binding.settingsRead.isChecked());
+        newSettings.setBlockRecordIndicator(binding.settingsBlockRecord.isChecked());
 
         // save settings according to UI inputs
         presenter.saveSettings(newSettings);
@@ -191,6 +193,7 @@
         binding.settingsStartup.setChecked(viewModel.isAllowOnStartup());
         binding.settingsTyping.setChecked(viewModel.isAllowTypingIndicator());
         binding.settingsRead.setChecked(viewModel.isAllowReadIndicator());
+        binding.settingsBlockRecord.setChecked(viewModel.isRecordingBlocked());
         mIsRefreshingViewFromPresenter = false;
     }
 
diff --git a/ring-android/app/src/main/res/drawable/baseline_stop_screen_share_24dp.xml b/ring-android/app/src/main/res/drawable/baseline_stop_screen_share_24dp.xml
new file mode 100644
index 0000000..ecd1644
--- /dev/null
+++ b/ring-android/app/src/main/res/drawable/baseline_stop_screen_share_24dp.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M21.22,18.02l2,2L24,20.02v-2h-2.78zM21.99,16.02l0.01,-10c0,-1.11 -0.9,-2 -2,-2L7.22,4.02l5.23,5.23c0.18,-0.04 0.36,-0.07 0.55,-0.1L13,7.02l4,3.73 -1.58,1.47 5.54,5.54c0.61,-0.33 1.03,-0.99 1.03,-1.74zM2.39,1.73L1.11,3l1.54,1.54c-0.4,0.36 -0.65,0.89 -0.65,1.48v10c0,1.1 0.89,2 2,2L0,18.02v2h18.13l2.71,2.71 1.27,-1.27L2.39,1.73zM7,15.02c0.31,-1.48 0.92,-2.95 2.07,-4.06l1.59,1.59c-1.54,0.38 -2.7,1.18 -3.66,2.47z"
+      android:fillColor="#ffffff"/>
+</vector>
diff --git a/ring-android/app/src/main/res/layout/frag_settings.xml b/ring-android/app/src/main/res/layout/frag_settings.xml
index b585ee0..5832400 100644
--- a/ring-android/app/src/main/res/layout/frag_settings.xml
+++ b/ring-android/app/src/main/res/layout/frag_settings.xml
@@ -348,6 +348,57 @@
             </RelativeLayout>
 
             <RelativeLayout
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:padding="@dimen/padding_large">
+
+                <ImageView
+                    android:id="@+id/system_block_record_image"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:contentDescription="@string/pref_read_summary"
+                    android:src="@drawable/baseline_stop_screen_share_24dp"
+                    android:layout_alignParentStart="true"
+                    app:tint="@color/colorPrimary"
+                    android:layout_centerVertical="true"
+                    android:layout_marginEnd="32dp"/>
+
+                <LinearLayout
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_centerVertical="true"
+                    android:layout_toStartOf="@+id/settings_block_record"
+                    android:layout_toEndOf="@+id/system_block_record_image"
+                    android:orientation="vertical">
+
+                    <TextView
+                        style="@style/ListPrimary"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:ellipsize="end"
+                        android:lines="1"
+                        android:text="@string/pref_block_record_title" />
+
+                    <TextView
+                        style="@style/ListSecondary"
+                        android:layout_width="match_parent"
+                        android:layout_height="wrap_content"
+                        android:text="@string/pref_block_record_summary" />
+
+                </LinearLayout>
+
+                <Switch
+                    android:id="@+id/settings_block_record"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:layout_alignParentEnd="true"
+                    android:checked="false"
+                    android:layout_marginStart="16dp"
+                    android:layout_centerVertical="true"/>
+
+            </RelativeLayout>
+
+            <RelativeLayout
                 android:id="@+id/settings_clear_history"
                 android:layout_width="match_parent"
                 android:layout_height="match_parent"
diff --git a/ring-android/app/src/main/res/values/strings_preferences.xml b/ring-android/app/src/main/res/values/strings_preferences.xml
index fc86ea0..cc7e48c 100644
--- a/ring-android/app/src/main/res/values/strings_preferences.xml
+++ b/ring-android/app/src/main/res/values/strings_preferences.xml
@@ -56,6 +56,9 @@
     <string name="pref_read_title">Enable read receipts</string>
     <string name="pref_read_summary">Send and receive receipts indicating that a message have been displayed.</string>
 
+    <string name="pref_block_record_title">Block screenshot and recording</string>
+    <string name="pref_block_record_summary">Block taking screenshot or record video in conversations</string>
+
     <!-- Plugin -->
     <string name="pref_plugins_title">Plugins</string>
     <string name="pref_plugins_summary">Enable plugins and set their parameters</string>
diff --git a/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java
index 76328fd..89d6746 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/call/CallPresenter.java
@@ -39,6 +39,7 @@
 import cx.ring.services.ContactService;
 import cx.ring.services.DeviceRuntimeService;
 import cx.ring.services.HardwareService;
+import cx.ring.services.PreferencesService;
 import cx.ring.utils.Log;
 import cx.ring.utils.StringUtils;
 import io.reactivex.Maybe;
@@ -65,6 +66,7 @@
     private Conference mConference;
     private final List<SipCall> mPendingCalls = new ArrayList<>();
     private final Subject<List<SipCall>> mPendingSubject = BehaviorSubject.createDefault(mPendingCalls);
+    private final PreferencesService mPreferencesService;
 
     private boolean mOnGoingCall = false;
     private boolean mAudioOnly = true;
@@ -92,13 +94,15 @@
                          HardwareService hardwareService,
                          CallService callService,
                          DeviceRuntimeService deviceRuntimeService,
-                         ConversationFacade conversationFacade) {
+                         ConversationFacade conversationFacade,
+                         PreferencesService preferencesService) {
         mAccountService = accountService;
         mContactService = contactService;
         mHardwareService = hardwareService;
         mCallService = callService;
         mDeviceRuntimeService = deviceRuntimeService;
         mConversationFacade = conversationFacade;
+        mPreferencesService = preferencesService;
     }
 
     public void cameraPermissionChanged(boolean isGranted) {
@@ -742,4 +746,9 @@
             return;
         mHardwareService.switchInput(mConference.getId(), mHardwareService.isPreviewFromFrontCamera());
     }
+
+    public boolean setBlockRecordStatus(){
+        return mPreferencesService.getSettings().isRecordingBlocked();
+    }
+
 }
diff --git a/ring-android/libringclient/src/main/java/cx/ring/conversation/ConversationPresenter.java b/ring-android/libringclient/src/main/java/cx/ring/conversation/ConversationPresenter.java
index d145b28..13273fd 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/conversation/ConversationPresenter.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/conversation/ConversationPresenter.java
@@ -85,7 +85,8 @@
                                  HardwareService hardwareService,
                                  ConversationFacade conversationFacade,
                                  VCardService vCardService,
-                                 DeviceRuntimeService deviceRuntimeService, PreferencesService preferencesService) {
+                                 DeviceRuntimeService deviceRuntimeService,
+                                 PreferencesService preferencesService) {
         mContactService = contactService;
         mAccountService = accountService;
         mHardwareService = hardwareService;
@@ -133,7 +134,7 @@
                     }
                 }));
 
-        getView().setReadIndicatorStatus(setReadIndicatorStatus());
+        getView().setReadIndicatorStatus(showReadIndicator());
     }
 
     private void setConversation(final Conversation conversation) {
@@ -435,8 +436,12 @@
         return mPreferencesService.getSettings().isAllowTypingIndicator();
     }
 
-    private boolean setReadIndicatorStatus() {
+    private boolean showReadIndicator() {
         return mPreferencesService.getSettings().isAllowReadIndicator();
     }
 
+    public boolean isRecordingBlocked(){
+        return mPreferencesService.getSettings().isRecordingBlocked();
+    }
+
 }
diff --git a/ring-android/libringclient/src/main/java/cx/ring/model/Settings.java b/ring-android/libringclient/src/main/java/cx/ring/model/Settings.java
index 81f95ae..47c9be6 100644
--- a/ring-android/libringclient/src/main/java/cx/ring/model/Settings.java
+++ b/ring-android/libringclient/src/main/java/cx/ring/model/Settings.java
@@ -27,6 +27,7 @@
     private boolean mAllowOnStartup;
     private boolean mAllowTypingIndicator;
     private boolean mAllowReadIndicator;
+    private boolean mBlockRecordIndicator;
     private boolean mHwEncoding;
 
     public Settings() {
@@ -41,6 +42,7 @@
             mAllowOnStartup = s.mAllowOnStartup;
             mAllowTypingIndicator = s.mAllowTypingIndicator;
             mAllowReadIndicator = s.mAllowReadIndicator;
+            mBlockRecordIndicator = s.mBlockRecordIndicator;
             mHwEncoding = s.mHwEncoding;
         }
     }
@@ -101,4 +103,12 @@
         return mAllowReadIndicator;
     }
 
+    public void setBlockRecordIndicator(boolean checked) {
+        this.mBlockRecordIndicator = checked;
+    }
+
+    public boolean isRecordingBlocked() {
+        return mBlockRecordIndicator;
+    }
+
 }
