/** @hide */
public static final int DISPATCH_HANDLED = 1;
- /** @hide */
- public static final int SHOW_IM_PICKER_MODE_AUTO = 0;
- /** @hide */
- public static final int SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES = 1;
- /** @hide */
- public static final int SHOW_IM_PICKER_MODE_EXCLUDE_AUXILIARY_SUBTYPES = 2;
-
final IInputMethodManager mService;
final Looper mMainLooper;
}
}
- /**
- * Shows the input method chooser dialog.
- *
- * @param showAuxiliarySubtypes Set true to show auxiliary input methods.
- * @hide
- */
- public void showInputMethodPicker(boolean showAuxiliarySubtypes) {
- synchronized (mH) {
- try {
- final int mode = showAuxiliarySubtypes ?
- SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES:
- SHOW_IM_PICKER_MODE_EXCLUDE_AUXILIARY_SUBTYPES;
- mService.showInputMethodPickerFromClient(mClient, mode);
- } catch (RemoteException e) {
- Log.w(TAG, "IME died: " + mCurId, e);
- }
- }
- }
-
private void showInputMethodPickerLocked() {
try {
- mService.showInputMethodPickerFromClient(mClient, SHOW_IM_PICKER_MODE_AUTO);
+ mService.showInputMethodPickerFromClient(mClient);
} catch (RemoteException e) {
Log.w(TAG, "IME died: " + mCurId, e);
}
}
public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeList(
- boolean showSubtypes, boolean includeAuxiliarySubtypes, boolean isScreenLocked) {
+ boolean showSubtypes, boolean inputShown, boolean isScreenLocked) {
final ArrayList<ImeSubtypeListItem> imList =
new ArrayList<ImeSubtypeListItem>();
final HashMap<InputMethodInfo, List<InputMethodSubtype>> immis =
if (immis == null || immis.size() == 0) {
return Collections.emptyList();
}
- if (isScreenLocked && includeAuxiliarySubtypes) {
- if (DEBUG) {
- Slog.w(TAG, "Auxiliary subtypes are not allowed to be shown in lock screen.");
- }
- includeAuxiliarySubtypes = false;
- }
mSortedImmis.clear();
mSortedImmis.putAll(immis);
for (InputMethodInfo imi : mSortedImmis.keySet()) {
final String subtypeHashCode = String.valueOf(subtype.hashCode());
// We show all enabled IMEs and subtypes when an IME is shown.
if (enabledSubtypeSet.contains(subtypeHashCode)
- && (includeAuxiliarySubtypes || !subtype.isAuxiliary())) {
+ && ((inputShown && !isScreenLocked) || !subtype.isAuxiliary())) {
final CharSequence subtypeLabel =
subtype.overridesImplicitlyEnabledSubtype() ? null : subtype
.getDisplayName(mContext, imi.getPackageName(),
}
public List<ImeSubtypeListItem> getSortedInputMethodAndSubtypeListLocked(boolean showSubtypes,
- boolean includingAuxiliarySubtypes, boolean isScreenLocked) {
+ boolean inputShown, boolean isScreenLocked) {
return mSubtypeList.getSortedInputMethodAndSubtypeList(
- showSubtypes, includingAuxiliarySubtypes, isScreenLocked);
+ showSubtypes, inputShown, isScreenLocked);
}
}
int controlFlags, int softInputMode, int windowFlags,
in EditorInfo attribute, IInputContext inputContext);
- void showInputMethodPickerFromClient(in IInputMethodClient client,
- int auxiliarySubtypeMode);
+ void showInputMethodPickerFromClient(in IInputMethodClient client);
void showInputMethodAndSubtypeEnablerFromClient(in IInputMethodClient client, String topId);
void setInputMethod(in IBinder token, String id);
void setInputMethodAndSubtype(in IBinder token, String id, in InputMethodSubtype subtype);
switchImeButton.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mCallback.userActivity(); // Leave the screen on a bit longer
- // Do not show auxiliary subtypes in password lock screen.
- mImm.showInputMethodPicker(false /* showAuxiliarySubtypes */);
+ mImm.showInputMethodPicker();
}
});
}
@Override
public void onClick(View view) {
((InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE))
- .showInputMethodPicker(true /* showAuxiliarySubtypes */);
+ .showInputMethodPicker();
}
};
}
@Override
- public void showInputMethodPickerFromClient(
- IInputMethodClient client, int auxiliarySubtypeMode) {
+ public void showInputMethodPickerFromClient(IInputMethodClient client) {
if (!calledFromValidUser()) {
return;
}
// Always call subtype picker, because subtype picker is a superset of input method
// picker.
- mHandler.sendMessage(mCaller.obtainMessageI(
- MSG_SHOW_IM_SUBTYPE_PICKER, auxiliarySubtypeMode));
+ mHandler.sendEmptyMessage(MSG_SHOW_IM_SUBTYPE_PICKER);
}
}
SomeArgs args;
switch (msg.what) {
case MSG_SHOW_IM_SUBTYPE_PICKER:
- final boolean showAuxSubtypes;
- switch (msg.arg1) {
- case InputMethodManager.SHOW_IM_PICKER_MODE_AUTO:
- // This is undocumented so far, but IMM#showInputMethodPicker() has been
- // implemented so that auxiliary subtypes will be excluded when the soft
- // keyboard is invisible.
- showAuxSubtypes = mInputShown;
- break;
- case InputMethodManager.SHOW_IM_PICKER_MODE_INCLUDE_AUXILIARY_SUBTYPES:
- showAuxSubtypes = true;
- break;
- case InputMethodManager.SHOW_IM_PICKER_MODE_EXCLUDE_AUXILIARY_SUBTYPES:
- showAuxSubtypes = false;
- break;
- default:
- Slog.e(TAG, "Unknown subtype picker mode = " + msg.arg1);
- return false;
- }
- showInputMethodMenu(showAuxSubtypes);
+ showInputMethodMenu();
return true;
case MSG_SHOW_IM_SUBTYPE_ENABLER:
&& mKeyguardManager.isKeyguardLocked() && mKeyguardManager.isKeyguardSecure();
}
- private void showInputMethodMenu(boolean showAuxSubtypes) {
- if (DEBUG) Slog.v(TAG, "Show switching menu. showAuxSubtypes=" + showAuxSubtypes);
+ private void showInputMethodMenu() {
+ if (DEBUG) Slog.v(TAG, "Show switching menu");
final Context context = mContext;
final boolean isScreenLocked = isScreenLocked();
final List<ImeSubtypeListItem> imList =
mSwitchingController.getSortedInputMethodAndSubtypeListLocked(
- true /* showSubtypes */, showAuxSubtypes, isScreenLocked);
+ true /* showSubtypes */, mInputShown, isScreenLocked);
if (lastInputMethodSubtypeId == NOT_A_SUBTYPE_ID) {
final InputMethodSubtype currentSubtype = getCurrentInputMethodSubtypeLocked();