2015-04-22 1 views
16

Я пытаюсь закрыть программную клавиатуру, открытую в другом приложении. Я попытался каждое решение отсюда: Programmatically Hide/Show Android Soft Keyboard или здесь: Close/hide the Android Soft KeyboardСкрыть программную клавиатуру для приложения для шкафчика

Как вы можете видеть на фотографиях, которые я должен закрыть клавиатуру открыта из другого приложения, добавив явить не сделать клавиатуру видно не сделали сделайте трюк.

Чтобы отметить, что это приложение-шкафчик, я запускаю действие, когда телефон переходит в спящий режим.

Я что-то не хватает? Тестирование других приложений шкафчика из магазина и не сталкивались с этой проблемой

Но вот результат:

App with opened keyboard My app

Edit: Подробнее

Это, как я начала шкафчика:

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; 
} 

Код манифест:

<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" /> 

ответ

0

Я, наконец, решил проблему. Вот как выглядит мой код манифеста для деятельности:

<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" /> 
+0

Я пробовал этот, но без эффекта. Пожалуйста, дайте мне знать, если нужно сделать что-то другое, кроме этого –

+0

@AkarshM Я тоже не работал для меня, он работал только на некоторых устройствах, к сожалению, проект был включен поэтому я больше не занимался исследованиями – Tazz

+0

okay thanks Tazz –

4

Попробуйте заменить android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" с android:windowSoftInputMode="stateHidden" линии в AndroidManifest.xml как этот

<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" Мягкая KEYB когда пользователь выбирает действие - то есть, когда пользователь утвердительно переводит на активность, а не обратно в нее из-за оставления другого .

«stateAlwaysHidden» Мягкая клавиатура всегда скрыта, когда главное окно деятельности имеет фокус ввода.

+0

такой же вопрос :(...клавиатура не скрывает, если я открываю клавиатуру из композитора sms или поиска Google. Пробовал в приложениях, таких как whatsapp, который работает, но он также работал с моим решением :( – Tazz

2

Это может быть достигнуто перекрывая onPause() этой деятельности и использования следующий кусок кода, как

@Override 
public void onPause() { 
    super.onPause(); 
    if (null != getWindow()){ 
     getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
    } 
} 
+0

не скрывает мягкую клавиатуру – Tazz

1

Попробуйте это в вашей деятельности:

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); 
    } 
} 
+0

http://stackoverflow.com/questions/1109022/close-hide-the-android-soft-keyboard/7696791 # 7696791 – bardi

+0

Не работает, потому что в фокусе зрения не вид, открывший программную клавиатуру. Программная клавиатура открывается в другом приложении. – Tazz

1

Попробуйте этот путь

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

Check this link

+0

У меня нет текстового текста. другое приложение, которое не зависит от моего приложения – Tazz

+0

привет, пожалуйста, проверьте мои измененные анны, добавили полезную ссылку, надеюсь, что это поможет вам –

+0

проверит ссылку, застрял с некоторой работой – Tazz

 Смежные вопросы

  • Нет связанных вопросов^_^