From 5fa2cfa92bce2e0483e2e2fde3d019fa82274ebc Mon Sep 17 00:00:00 2001 From: Joanne Date: Fri, 13 Jan 2023 18:24:11 +0800 Subject: [PATCH] Add nullability annotation for VISS#onShow() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The VISS#onShow Bundle argument is provided by showSession. The VIS#showSession() doesn’t do null check, so it is possible the Bundle parameter in VISS#onShow will be null. The argument has been @Nullable for a few releases, but we never marked nullability. We add nullability for the Bundle parameter to avoid the developer skipping to do null check that may break the application. In Android 14, the 389401c70ad02e79acdc959f0d3a6f8b59f5083c add an id into Bundle, the Bundle will not be null starting from Android 14 but the argument was still Nullable in older platforms. We also update the javadoc to mention this case. Bug: 178775773 Test: build pass Change-Id: I175db4e61a2cf5b49b122f94f72c57bb5a154d85 --- core/api/current.txt | 2 +- .../java/android/service/voice/VoiceInteractionSession.java | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/core/api/current.txt b/core/api/current.txt index 4b1335e0d6d60..d2c307d3d2479 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -40580,7 +40580,7 @@ package android.service.voice { method public void onRequestCompleteVoice(android.service.voice.VoiceInteractionSession.CompleteVoiceRequest); method public void onRequestConfirmation(android.service.voice.VoiceInteractionSession.ConfirmationRequest); method public void onRequestPickOption(android.service.voice.VoiceInteractionSession.PickOptionRequest); - method public void onShow(android.os.Bundle, int); + method public void onShow(@Nullable android.os.Bundle, int); method public void onTaskFinished(android.content.Intent, int); method public void onTaskStarted(android.content.Intent, int); method public void onTrimMemory(int); diff --git a/core/java/android/service/voice/VoiceInteractionSession.java b/core/java/android/service/voice/VoiceInteractionSession.java index d55fedefb5cbb..4757845da9acf 100644 --- a/core/java/android/service/voice/VoiceInteractionSession.java +++ b/core/java/android/service/voice/VoiceInteractionSession.java @@ -1767,11 +1767,13 @@ public class VoiceInteractionSession implements KeyEvent.Callback, ComponentCall * Intent.EXTRA_TIME ("android.intent.extra.TIME") indicating timing * in milliseconds of the KeyEvent that triggered Assistant and * Intent.EXTRA_ASSIST_INPUT_DEVICE_ID (android.intent.extra.ASSIST_INPUT_DEVICE_ID) - * referring to the device that sent the request. + * referring to the device that sent the request. Starting from Android 14, the system will + * add {@link VoiceInteractionService#KEY_SHOW_SESSION_ID}, the Bundle is not null. But the + * application should handle null case before Android 14. * @param showFlags The show flags originally provided to * {@link VoiceInteractionService#showSession VoiceInteractionService.showSession}. */ - public void onShow(Bundle args, int showFlags) { + public void onShow(@Nullable Bundle args, int showFlags) { } /**