am d866f500: Merge "Add new API shouldOfferSwitchingToNextInputMethod" into klp-dev

* commit 'd866f5002aef29de5cde0e3b5e84ed3992214916':
  Add new API shouldOfferSwitchingToNextInputMethod
This commit is contained in:
Satoshi Kataoka
2013-08-23 02:33:26 -07:00
committed by Android Git Automerger
4 changed files with 36 additions and 1 deletions

View File

@ -29299,6 +29299,7 @@ package android.view.inputmethod {
method public boolean setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype); method public boolean setCurrentInputMethodSubtype(android.view.inputmethod.InputMethodSubtype);
method public void setInputMethod(android.os.IBinder, java.lang.String); method public void setInputMethod(android.os.IBinder, java.lang.String);
method public void setInputMethodAndSubtype(android.os.IBinder, java.lang.String, android.view.inputmethod.InputMethodSubtype); method public void setInputMethodAndSubtype(android.os.IBinder, java.lang.String, android.view.inputmethod.InputMethodSubtype);
method public boolean shouldOfferSwitchingToNextInputMethod(android.os.IBinder);
method public void showInputMethodAndSubtypeEnabler(java.lang.String); method public void showInputMethodAndSubtypeEnabler(java.lang.String);
method public void showInputMethodPicker(); method public void showInputMethodPicker();
method public boolean showSoftInput(android.view.View, int); method public boolean showSoftInput(android.view.View, int);

View File

@ -1875,6 +1875,24 @@ public final class InputMethodManager {
} }
} }
/**
* Returns true if the current IME needs to offer the users a way to switch to a next input
* method. When the user triggers it, the IME has to call {@link #switchToNextInputMethod} to
* switch to a next input method which is selected by the system.
* @param imeToken Supplies the identifying token given to an input method when it was started,
* which allows it to perform this operation on itself.
*/
public boolean shouldOfferSwitchingToNextInputMethod(IBinder imeToken) {
synchronized (mH) {
try {
return mService.shouldOfferSwitchingToNextInputMethod(imeToken);
} catch (RemoteException e) {
Log.w(TAG, "IME died: " + mCurId, e);
return false;
}
}
}
/** /**
* Set additional input method subtypes. Only a process which shares the same uid with the IME * Set additional input method subtypes. Only a process which shares the same uid with the IME
* can add additional input method subtypes to the IME. * can add additional input method subtypes to the IME.

View File

@ -56,7 +56,7 @@ interface IInputMethodManager {
InputBindResult windowGainedFocus(in IInputMethodClient client, in IBinder windowToken, InputBindResult windowGainedFocus(in IInputMethodClient client, in IBinder windowToken,
int controlFlags, int softInputMode, int windowFlags, int controlFlags, int softInputMode, int windowFlags,
in EditorInfo attribute, IInputContext inputContext); in EditorInfo attribute, IInputContext inputContext);
void showInputMethodPickerFromClient(in IInputMethodClient client); void showInputMethodPickerFromClient(in IInputMethodClient client);
void showInputMethodAndSubtypeEnablerFromClient(in IInputMethodClient client, String topId); void showInputMethodAndSubtypeEnablerFromClient(in IInputMethodClient client, String topId);
void setInputMethod(in IBinder token, String id); void setInputMethod(in IBinder token, String id);
@ -71,6 +71,7 @@ interface IInputMethodManager {
boolean setCurrentInputMethodSubtype(in InputMethodSubtype subtype); boolean setCurrentInputMethodSubtype(in InputMethodSubtype subtype);
boolean switchToLastInputMethod(in IBinder token); boolean switchToLastInputMethod(in IBinder token);
boolean switchToNextInputMethod(in IBinder token, boolean onlyCurrentIme); boolean switchToNextInputMethod(in IBinder token, boolean onlyCurrentIme);
boolean shouldOfferSwitchingToNextInputMethod(in IBinder token);
boolean setInputMethodEnabled(String id, boolean enabled); boolean setInputMethodEnabled(String id, boolean enabled);
oneway void setAdditionalInputMethodSubtypes(String id, in InputMethodSubtype[] subtypes); oneway void setAdditionalInputMethodSubtypes(String id, in InputMethodSubtype[] subtypes);
} }

View File

@ -2158,6 +2158,21 @@ public class InputMethodManagerService extends IInputMethodManager.Stub
} }
} }
@Override
public boolean shouldOfferSwitchingToNextInputMethod(IBinder token) {
if (!calledFromValidUser()) {
return false;
}
synchronized (mMethodMap) {
final ImeSubtypeListItem nextSubtype = mImListManager.getNextInputMethod(
false /* onlyCurrentIme */, mMethodMap.get(mCurMethodId), mCurrentSubtype);
if (nextSubtype == null) {
return false;
}
return true;
}
}
@Override @Override
public InputMethodSubtype getLastInputMethodSubtype() { public InputMethodSubtype getLastInputMethodSubtype() {
if (!calledFromValidUser()) { if (!calledFromValidUser()) {