diff options
3 files changed, 25 insertions, 3 deletions
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java index 424d3557a5aa..2f7c55097929 100644 --- a/core/java/android/app/ActivityManager.java +++ b/core/java/android/app/ActivityManager.java @@ -126,6 +126,19 @@ public class ActivityManager { public static final String META_HOME_ALTERNATE = "android.app.home.alternate"; /** + * Result for IActivityManager.startVoiceActivity: active session is currently hidden. + * @hide + */ + public static final int START_VOICE_HIDDEN_SESSION = -10; + + /** + * Result for IActivityManager.startVoiceActivity: active session does not match + * the requesting token. + * @hide + */ + public static final int START_VOICE_NOT_ACTIVE_SESSION = -9; + + /** * Result for IActivityManager.startActivity: trying to start a background user * activity that shouldn't be displayed for all users. * @hide diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java index 4fca69ac31be..95ea2a561bbe 100644 --- a/core/java/android/app/Instrumentation.java +++ b/core/java/android/app/Instrumentation.java @@ -1797,7 +1797,7 @@ public class Instrumentation { if (res >= ActivityManager.START_SUCCESS) { return; } - + switch (res) { case ActivityManager.START_INTENT_NOT_RESOLVED: case ActivityManager.START_CLASS_NOT_FOUND: @@ -1820,6 +1820,15 @@ public class Instrumentation { case ActivityManager.START_NOT_VOICE_COMPATIBLE: throw new SecurityException( "Starting under voice control not allowed for: " + intent); + case ActivityManager.START_VOICE_NOT_ACTIVE_SESSION: + throw new IllegalStateException( + "Session calling startVoiceActivity does not match active session"); + case ActivityManager.START_VOICE_HIDDEN_SESSION: + throw new IllegalStateException( + "Cannot start voice activity on a hidden session"); + case ActivityManager.START_CANCELED: + throw new AndroidRuntimeException("Activity could not be started for " + + intent); default: throw new AndroidRuntimeException("Unknown error code " + res + " when starting " + intent); diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java index 1e9db18aa6a3..3f9da4c154ea 100644 --- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java +++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java @@ -183,11 +183,11 @@ class VoiceInteractionManagerServiceImpl implements VoiceInteractionSessionConne try { if (mActiveSession == null || token != mActiveSession.mToken) { Slog.w(TAG, "startVoiceActivity does not match active session"); - return ActivityManager.START_CANCELED; + return ActivityManager.START_VOICE_NOT_ACTIVE_SESSION; } if (!mActiveSession.mShown) { Slog.w(TAG, "startVoiceActivity not allowed on hidden session"); - return ActivityManager.START_CANCELED; + return ActivityManager.START_VOICE_HIDDEN_SESSION; } intent = new Intent(intent); intent.addCategory(Intent.CATEGORY_VOICE); |