InputMethodManagerCompatWrapper.java revision b6ca354431367b625daf9fff5fbe4b1f5ef996ab
1610f1dc8553cf2ed97e763a06a19380c4a6cd636satok/*
2610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * Copyright (C) 2011 The Android Open Source Project
3610f1dc8553cf2ed97e763a06a19380c4a6cd636satok *
4610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * Licensed under the Apache License, Version 2.0 (the "License");
5610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * you may not use this file except in compliance with the License.
6610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * You may obtain a copy of the License at
7610f1dc8553cf2ed97e763a06a19380c4a6cd636satok *
8610f1dc8553cf2ed97e763a06a19380c4a6cd636satok *      http://www.apache.org/licenses/LICENSE-2.0
9610f1dc8553cf2ed97e763a06a19380c4a6cd636satok *
10610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * Unless required by applicable law or agreed to in writing, software
11610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * distributed under the License is distributed on an "AS IS" BASIS,
12610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * See the License for the specific language governing permissions and
14610f1dc8553cf2ed97e763a06a19380c4a6cd636satok * limitations under the License.
15610f1dc8553cf2ed97e763a06a19380c4a6cd636satok */
16610f1dc8553cf2ed97e763a06a19380c4a6cd636satok
17610f1dc8553cf2ed97e763a06a19380c4a6cd636satokpackage com.android.inputmethod.compat;
18610f1dc8553cf2ed97e763a06a19380c4a6cd636satok
19610f1dc8553cf2ed97e763a06a19380c4a6cd636satokimport android.content.Context;
20610f1dc8553cf2ed97e763a06a19380c4a6cd636satokimport android.os.IBinder;
21610f1dc8553cf2ed97e763a06a19380c4a6cd636satokimport android.view.inputmethod.InputMethodManager;
2255d28fd1b2631a63542a647f693d8a8ed749bcf7Tadashi G. Takaoka
23610f1dc8553cf2ed97e763a06a19380c4a6cd636satokimport java.lang.reflect.Method;
24610f1dc8553cf2ed97e763a06a19380c4a6cd636satok
25a28a05e971cc242b338331a3b78276fa95188d19Tadashi G. Takaokapublic final class InputMethodManagerCompatWrapper {
26b6ca354431367b625daf9fff5fbe4b1f5ef996abKen Wakasa    // Note that InputMethodManager.switchToNextInputMethod() has been introduced
27b6ca354431367b625daf9fff5fbe4b1f5ef996abKen Wakasa    // in API level 16 (Build.VERSION_CODES.JELLY_BEAN).
2881d4e3cd66a9388c47c7dba55240ddf849b31934Tadashi G. Takaoka    private static final Method METHOD_switchToNextInputMethod = CompatUtils.getMethod(
2981d4e3cd66a9388c47c7dba55240ddf849b31934Tadashi G. Takaoka            InputMethodManager.class, "switchToNextInputMethod", IBinder.class, Boolean.TYPE);
30610f1dc8553cf2ed97e763a06a19380c4a6cd636satok
316fbbab3b8442ad010c53dc53a09535f7b0ef0323Tadashi G. Takaoka    public final InputMethodManager mImm;
3281d4e3cd66a9388c47c7dba55240ddf849b31934Tadashi G. Takaoka
336fbbab3b8442ad010c53dc53a09535f7b0ef0323Tadashi G. Takaoka    public InputMethodManagerCompatWrapper(final Context context) {
346fbbab3b8442ad010c53dc53a09535f7b0ef0323Tadashi G. Takaoka        mImm = (InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
35610f1dc8553cf2ed97e763a06a19380c4a6cd636satok    }
36610f1dc8553cf2ed97e763a06a19380c4a6cd636satok
376fbbab3b8442ad010c53dc53a09535f7b0ef0323Tadashi G. Takaoka    public boolean switchToNextInputMethod(final IBinder token, final boolean onlyCurrentIme) {
38b6ca354431367b625daf9fff5fbe4b1f5ef996abKen Wakasa        return (Boolean)CompatUtils.invoke(mImm, false /* defaultValue */,
39b6ca354431367b625daf9fff5fbe4b1f5ef996abKen Wakasa                METHOD_switchToNextInputMethod, token, onlyCurrentIme);
4081d4e3cd66a9388c47c7dba55240ddf849b31934Tadashi G. Takaoka    }
41610f1dc8553cf2ed97e763a06a19380c4a6cd636satok}
42