关于android:隐藏软键盘用于更衣室应用程序

Hide softkeyboard for locker app

我正在尝试关闭在另一个应用程序中打开的软键盘。
我试过这里的每一个解决方案:
以编程方式隐藏/显示Android软键盘或此处:关闭/隐藏Android软键盘

正如你在图片中看到我必须关闭从另一个应用程序打开的键盘,添加到清单,不要让键盘可见,没有成功。

要注意这是一个更衣室应用程序,我会在手机进入睡眠模式时启动一项活动。

我错过了什么吗? 从商店测试其他更衣室应用程序并没有遇到此问题

但结果如下:

App with opened keyboard
My app

编辑:更多信息

这是我启动储物柜的方式:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
    //Toast.makeText(context,"" +"screeen off", Toast.LENGTH_SHORT).show();

    wasScreenOn = false;
    Intent intent = new Intent(context, LockScreenActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK);
    intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

    context.startActivity(intent);

    // do whatever you need to do here
    //wasScreenOn = false;
}

这是清单代码:

1
2
3
4
5
6
7
<activity
    android:name=".ui.activities.LockScreenActivity"
    android:excludeFromRecents="true"
    android:noHistory="true"
    android:screenOrientation="portrait"
    android:windowSoftInputMode="stateAlwaysHidden|adjustNothing"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

Try replacing
android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" with
android:windowSoftInputMode="stateHidden" line in
AndroidManifest.xml like this

1
2
3
4
5
6
7
<activity
        android:name=".ui.activities.LockScreenActivity"
        android:excludeFromRecents="true"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" />

作为参考,您可以参考http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

"stateHidden" The soft keyboard is hidden when the user chooses the
activity — that is, when the user affirmatively navigates forward to
the activity, rather than backs into it because of leaving another
activity.

"stateAlwaysHidden" The soft keyboard is always hidden when the
activity's main window has input focus.


可以实现覆盖此活动的onPause()并使用以下代码作为

1
2
3
4
5
6
7
@Override
public void onPause() {
    super.onPause();
    if (null != getWindow()){
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
    }
}


试试这种方式

1
2
3
  InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(
                        Context.INPUT_METHOD_SERVICE);
                imm.hideSoftInputFromWindow(editText.getWindowToken(), 0);

检查此链接


在您的活动中试试这个:

1
2
3
4
5
6
7
8
private void hideKeyboard() {  
    // Check if no view has focus:
    View view = this.getCurrentFocus();
    if (view != null) {
        InputMethodManager inputManager = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
    }
}


我终于解决了这个问题。 这就是我的活动清单代码的样子:

1
2
3
4
5
6
7
8
9
10
11
12
<activity
        android:name=".ui.activities.LockScreenActivity"
        android:excludeFromRecents="true"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden"
        android:configChanges="keyboardHidden"
        android:launchMode="singleInstance"
        android:multiprocess="false"
        android:stateNotNeeded="true"
        android:taskAffinity=""
        android:theme="@style/Theme.AppCompat.Light.NoActionBar" />