summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/ActivityManager.java13
-rw-r--r--core/java/android/app/Instrumentation.java11
-rw-r--r--services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java4
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);