/** Finish the session. */
 public void finish() {
   if (mToken == null) {
     throw new IllegalStateException("Can't call before onCreate()");
   }
   hideWindow();
   try {
     mSystemService.finish(mToken);
   } catch (RemoteException e) {
   }
 }
 /**
  * @hide Ask that a new activity be started for voice interaction. This will create a new
  *     dedicated task in the activity manager for this voice interaction session; this means that
  *     {@link Intent#FLAG_ACTIVITY_NEW_TASK Intent.FLAG_ACTIVITY_NEW_TASK} will be set for you to
  *     make it a new task.
  *     <p>The newly started activity will be displayed to the user in a special way, as a layer
  *     under the voice interaction UI.
  *     <p>As the voice activity runs, it can retrieve a {@link android.app.VoiceInteractor}
  *     through which it can perform voice interactions through your session. These requests for
  *     voice interactions will appear as callbacks on {@link #onGetSupportedCommands}, {@link
  *     #onConfirm}, {@link #onCommand}, and {@link #onCancel}.
  *     <p>You will receive a call to {@link #onTaskStarted} when the task starts up and {@link
  *     #onTaskFinished} when the last activity has finished.
  * @param intent The Intent to start this voice interaction. The given Intent will always have
  *     {@link Intent#CATEGORY_VOICE Intent.CATEGORY_VOICE} added to it, since this is part of a
  *     voice interaction.
  */
 @SystemApi
 public void startVoiceActivity(Intent intent) {
   if (mToken == null) {
     throw new IllegalStateException("Can't call before onCreate()");
   }
   try {
     intent.migrateExtraStreamToClipData();
     intent.prepareToLeaveProcess();
     int res =
         mSystemService.startVoiceActivity(
             mToken, intent, intent.resolveType(mContext.getContentResolver()));
     Instrumentation.checkStartActivityResult(res, intent);
   } catch (RemoteException e) {
   }
 }