diff --git a/private/screencap.te b/private/screencap.te
index 579373aa6a3b41a20edfa24d477c3723bbcf9c9d..764880f55273a21dc452d7bca95d22a1e7e56ed1 100644
--- a/private/screencap.te
+++ b/private/screencap.te
@@ -8,7 +8,7 @@ allow screencap ion_device:chr_file rw_file_perms;
 
 allow screencap adbd:fifo_file write;
 allow screencap adbd:fd use;
-allow screencap adbd:unix_stream_socket { read write };
+allow screencap adbd:unix_stream_socket { read write getattr ioctl };
 
 allow screencap shell_data_file:file write;
 allow screencap shell:fd use;
@@ -20,7 +20,21 @@ allow screencap dumpstate:unix_stream_socket { read write };
 binder_use(screencap)
 binder_call(screencap, surfaceflinger)
 allow screencap surfaceflinger_service:service_manager find;
-allow screencap surfaceflinger:fd use;
+binder_call(screencap, system_server)
+allow screencap activity_service:service_manager find;
 
 hwbinder_use(screencap)
 hal_client_domain(screencap, hal_graphics_allocator)
+
+allow screencap shell_exec:file rx_file_perms;
+allow screencap system_file:file execute_no_trans;
+
+allow screencap media_rw_data_file:dir rw_dir_perms;
+allow screencap media_rw_data_file:file rw_file_perms;
+allow screencap mnt_user_file:dir search;
+allow screencap mnt_user_file:lnk_file read;
+allow screencap sdcardfs:dir { search write };
+allow screencap sdcardfs:file { open write };
+allow screencap storage_file:dir search;
+allow screencap storage_file:lnk_file read;
+allow screencap tmpfs:dir search;
diff --git a/private/system_server.te b/private/system_server.te
index a46272ad6be7a9fc8fa6fb82507a50b6a7e99451..00dc6a568ac79aa245a7e8ad2c021c4a650003e1 100644
--- a/private/system_server.te
+++ b/private/system_server.te
@@ -181,6 +181,7 @@ binder_call(system_server, gatekeeperd)
 binder_call(system_server, installd)
 binder_call(system_server, incidentd)
 binder_call(system_server, netd)
+binder_call(system_server, screencap)
 binder_call(system_server, wificond)
 binder_service(system_server)