/**
  * Call {@link InputMethodSession#appPrivateCommand(String, Bundle)
  * InputMethodSession.appPrivateCommand()} on the current Input Method.
  *
  * @param view Optional View that is sending the command, or null if you want to send the command
  *     regardless of the view that is attached to the input method.
  * @param action Name of the command to be performed. This <em>must</em> be a scoped name, i.e.
  *     prefixed with a package name you own, so that different developers will not create
  *     conflicting commands.
  * @param data Any data to include with the command.
  */
 public void sendAppPrivateCommand(View view, String action, Bundle data) {
   checkFocus();
   synchronized (mH) {
     if ((mServedView != view
             && (mServedView == null || !mServedView.checkInputConnectionProxy(view)))
         || mCurrentTextBoxAttribute == null
         || mCurMethod == null) {
       return;
     }
     try {
       if (DEBUG) Log.v(TAG, "APP PRIVATE COMMAND " + action + ": " + data);
       mCurMethod.appPrivateCommand(action, data);
     } catch (RemoteException e) {
       Log.w(TAG, "IME died: " + mCurId, e);
     }
   }
 }