public void switchToShortcutIME() {
    if (mShortcutInputMethodInfo == null) {
      return;
    }

    final String imiId = mShortcutInputMethodInfo.getId();
    final InputMethodSubtypeCompatWrapper subtype = mShortcutSubtype;
    switchToTargetIME(imiId, subtype);
  }
 private Drawable getSubtypeIcon(
     InputMethodInfoCompatWrapper imi, InputMethodSubtypeCompatWrapper subtype) {
   final PackageManager pm = mService.getPackageManager();
   if (imi != null) {
     final String imiPackageName = imi.getPackageName();
     if (DBG) {
       Log.d(
           TAG,
           "Update icons of IME: "
               + imiPackageName
               + ","
               + getSubtypeLocale(subtype)
               + ","
               + subtype.getMode());
     }
     if (subtype != null) {
       return pm.getDrawable(
           imiPackageName, subtype.getIconResId(), imi.getServiceInfo().applicationInfo);
     } else if (imi.getSubtypeCount() > 0 && imi.getSubtypeAt(0) != null) {
       return pm.getDrawable(
           imiPackageName,
           imi.getSubtypeAt(0).getIconResId(),
           imi.getServiceInfo().applicationInfo);
     } else {
       try {
         return pm.getApplicationInfo(imiPackageName, 0).loadIcon(pm);
       } catch (PackageManager.NameNotFoundException e) {
         Log.w(TAG, "IME can't be found: " + imiPackageName);
       }
     }
   }
   return null;
 }
 private void updateShortcutIME() {
   if (DBG) {
     Log.d(
         TAG,
         "Update shortcut IME from : "
             + (mShortcutInputMethodInfo == null ? "<null>" : mShortcutInputMethodInfo.getId())
             + ", "
             + (mShortcutSubtype == null
                 ? "<null>"
                 : (getSubtypeLocale(mShortcutSubtype) + ", " + mShortcutSubtype.getMode())));
   }
   // TODO: Update an icon for shortcut IME
   final Map<InputMethodInfoCompatWrapper, List<InputMethodSubtypeCompatWrapper>> shortcuts =
       mImm.getShortcutInputMethodsAndSubtypes();
   mShortcutInputMethodInfo = null;
   mShortcutSubtype = null;
   for (InputMethodInfoCompatWrapper imi : shortcuts.keySet()) {
     List<InputMethodSubtypeCompatWrapper> subtypes = shortcuts.get(imi);
     // TODO: Returns the first found IMI for now. Should handle all shortcuts as
     // appropriate.
     mShortcutInputMethodInfo = imi;
     // TODO: Pick up the first found subtype for now. Should handle all subtypes
     // as appropriate.
     mShortcutSubtype = subtypes.size() > 0 ? subtypes.get(0) : null;
     break;
   }
   if (DBG) {
     Log.d(
         TAG,
         "Update shortcut IME to : "
             + (mShortcutInputMethodInfo == null ? "<null>" : mShortcutInputMethodInfo.getId())
             + ", "
             + (mShortcutSubtype == null
                 ? "<null>"
                 : (getSubtypeLocale(mShortcutSubtype) + ", " + mShortcutSubtype.getMode())));
   }
 }