Merge "Throw better exception when startVoiceActivity fails" into nyc-dev

am: 2be4c463bc

* commit '2be4c463bc6411cf6fb9e2a4be0cbb90c485d0de':
  Throw better exception when startVoiceActivity fails

Change-Id: Ie8dfd6ed1f366e24418f352c810281ca687c70fb
This commit is contained in:
Amith Yamasani
2016-04-21 00:50:10 +00:00
committed by android-build-merger
3 changed files with 25 additions and 3 deletions

View File

@@ -125,6 +125,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.

View File

@@ -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);

View File

@@ -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);