speech: Mask client identity when running the package manager call

Allow speech recognizers to list all the recognition services.

Bug: 210471821
Test: manual by reproducing the corresponding bug
Change-Id: If2dc9b81e26ca531cadd0ca25e207db036df9cdc
This commit is contained in:
Aleksandar Kiridzic
2022-04-20 17:40:02 +01:00
committed by Aleksandar Kiridžić
parent 71e2f74d9a
commit 4b945427b9

View File

@@ -268,9 +268,17 @@ final class SpeechRecognitionManagerServiceImpl extends
}
private boolean componentMapsToRecognitionService(@NonNull ComponentName serviceComponent) {
List<ResolveInfo> resolveInfos =
getContext().getPackageManager().queryIntentServicesAsUser(
new Intent(RecognitionService.SERVICE_INTERFACE), 0, getUserId());
List<ResolveInfo> resolveInfos;
final long identityToken = Binder.clearCallingIdentity();
try {
resolveInfos =
getContext().getPackageManager().queryIntentServicesAsUser(
new Intent(RecognitionService.SERVICE_INTERFACE), 0, getUserId());
} finally {
Binder.restoreCallingIdentity(identityToken);
}
if (resolveInfos == null) {
return false;
}