2015-04-22 16 views
16

Sto tentando di chiudere il pannello di controllo aperto in un'altra app. Ho provato ogni soluzione da qui: Programmatically Hide/Show Android Soft Keyboard o qui: Close/hide the Android Soft KeyboardNascondi softkey per app di armadietto

Come si può vedere nelle foto che ho per chiudere la tastiera aperta da un'altra applicazione, l'aggiunta di manifestare a non rendere visibile la tastiera no fare il trucco

Per notare che questa è un'app di armadietto, avvio un'attività quando il telefono passa in modalità di sospensione.

Mi manca qualcosa? Test altre applicazioni spogliatoi dal negozio e non ha riscontrato questo problema

Ma qui è il risultato:

App with opened keyboard My app

Edit: Maggiori informazioni

Questo è come mi metto l'armadio:

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

Questo è il codice manifest:

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

risposta

0

Ho finalmente risolto il problema. Ecco come appare il mio codice manifest per l'attività:

<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

Ho provato questo ma nessun effetto. Per favore fatemi sapere se ho bisogno di fare qualcos'altro, ad eccezione di questo –

+0

@AkarshM Non ho lavorato anche per me, ha funzionato solo su alcuni dispositivi, purtroppo il progetto è stato messo su tenere così non ho fatto altre ricerche – Tazz

+0

ok grazie Tazz –

4

provare a sostituire android:windowSoftInputMode="stateAlwaysHidden|adjustNothing" con android:windowSoftInputMode="stateHidden" linea in AndroidManifest.xml come questo

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

Per riferimento, è possibile fare riferimento http://developer.android.com/guide/topics/manifest/activity-element.html#wsoft

"stateHidden" The keyb morbido Oard è nascosto quando l'utente sceglie l'attività - ovvero, quando l'utente naviga affermativamente su l'attività, anziché tornare indietro a causa di lasciare un'altra attività .

"stateAlwaysHidden" La tastiera virtuale è sempre nascosta quando la finestra principale dell'attività ha il focus di input.

+0

stesso numero :(...la tastiera non si nasconde se apro la tastiera da sms compositore o google search. Provato in app come whatsapp che funziona, ma ha funzionato anche con la mia soluzione :( – Tazz

2

Può essere raggiunto l'override onPause() di questa attività e l'uso seguente pezzo di codice come

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

non nasconde la tastiera virtuale – Tazz

1

Prova questo nella vostra attività:

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

Non funziona perché la vista che ha lo stato attivo non è la vista che ha aperto la softkey.La tastiera software è aperta in un'altra app – Tazz

1

provare in questo modo

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

Check this link

+0

Non ho alcun testo di modifica nella mia vista. un'altra app che è indipendente dalla mia app – Tazz

+0

hi per favore controlla le mie ans modificate, aggiunto un link utile spero che ti aiuti –

+0

controllerà il link, rimarrà bloccato con qualche lavoro – Tazz

Problemi correlati