There is no such mechanism for check InputMethodPicker
is open or not.
But you can check it via another way like as using hasWindowFocus()
method for check has focus of your root layout.
Below 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 {
/** Called when the activity is first created. */
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();
}
}
}
InputMethodPicker
is opened? then what about other cases which takes root layout focus away? – Fiction