Add MODIFY_PHONE_STATE when registering receiver
Without this additional check we can end up handling
ACTION_TTY_PREFERRED_MODE_CHANGE from an unpriviledged app
Currently this intent is sent by dialer on 1P devices, so
it cannot be converted to a protected-broadcast
Bug: 236264289
Tests: atest DeviceCapabilityListenerTest
Change-Id: I221b28dd3e1f7ed51f915dc79a62f8818f8a65a2
diff --git a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java
index 442cf7d..cc5cadb 100644
--- a/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java
+++ b/src/java/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListener.java
@@ -274,7 +274,8 @@
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_AIRPLANE_MODE_CHANGED);
filter.addAction(TelecomManager.ACTION_TTY_PREFERRED_MODE_CHANGED);
- mContext.registerReceiver(mReceiver, filter);
+ mContext.registerReceiver(mReceiver, filter, android.Manifest.permission.MODIFY_PHONE_STATE,
+ null);
ContentResolver resolver = mContext.getContentResolver();
if (resolver != null) {
diff --git a/tests/src/com/android/ims/ContextFixture.java b/tests/src/com/android/ims/ContextFixture.java
index e987b38..48cb9ab 100644
--- a/tests/src/com/android/ims/ContextFixture.java
+++ b/tests/src/com/android/ims/ContextFixture.java
@@ -33,6 +33,7 @@
import android.content.pm.PackageManager;
import android.content.res.Resources;
import android.net.ConnectivityManager;
+import android.os.Handler;
import android.os.PersistableBundle;
import android.telecom.TelecomManager;
import android.telephony.CarrierConfigManager;
@@ -131,6 +132,12 @@
}
@Override
+ public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter,
+ String broadcastPermission, Handler scheduler) {
+ return null;
+ }
+
+ @Override
public void unregisterReceiver(BroadcastReceiver receiver) {
}
diff --git a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java b/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java
index 2d170ab..f622172 100644
--- a/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java
+++ b/tests/src/com/android/ims/rcs/uce/presence/publish/DeviceCapabilityListenerTest.java
@@ -107,7 +107,8 @@
deviceCapListener.initialize();
- verify(mContext).registerReceiver(any(), any());
+ verify(mContext).registerReceiver(any(), any(),
+ eq(android.Manifest.permission.MODIFY_PHONE_STATE), any());
verify(mProvisioningManager).registerProvisioningChangedCallback(any(), any());
}