There is no such mechanism for checking InputMethodPicker open or not.
But you can check it in another way, as when using the hasWindowFocus() method to check the focus of your root layout.
The following is sample code:
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainlayout" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <Button android:id="@+id/btnPicker" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Picker" /> <Button android:id="@+id/btnCheck" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Stop" /> </LinearLayout>
DemoappActivity.class
public class DemoappActivity extends Activity { Button btn1 , btn2; InputMethodManager imeManager; LinearLayout mLayoutRoot; TimerTask timertask; Timer timer; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); mLayoutRoot = (LinearLayout)findViewById(R.id.mainlayout); imeManager = (InputMethodManager) getApplicationContext().getSystemService(INPUT_METHOD_SERVICE); btn1 = (Button)findViewById(R.id.btnPicker); btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showInputMethodPicker(); } }); btn2 = (Button)findViewById(R.id.btnCheck); btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { timer.cancel(); } }); checkMyWindowHasFocus(); } @Override protected void onDestroy() { timer.cancel(); super.onDestroy(); } public void checkMyWindowHasFocus() { timertask = new TimerTask() { @Override public void run() { System.out.println("has window focus..."+mLayoutRoot.hasWindowFocus()); runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(getApplicationContext(), "Has focus "+mLayoutRoot.hasWindowFocus(), Toast.LENGTH_SHORT).show(); } }); } }; timer = new Timer(); timer.schedule(timertask, 500, 5000); } private void showInputMethodPicker() { if (imeManager != null) { imeManager.showInputMethodPicker(); } else { Toast.makeText(this, "Error",Toast.LENGTH_LONG).show(); } } }
Niranj Patel
source share