2016-06-08 11 views
-1

Есть ли способ отключить программный ключ для дома?Как отключить мягкий домашний ключ программно в android?

public boolean isSoftKeyAvail(Context context) { 
    final boolean[] isSoftkey = {false}; 
    final View activityRootView = ((Activity) context).getWindow().getDecorView().findViewById(android.R.id.content); 
    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      int rootViewHeight = activityRootView.getRootView().getHeight(); 
      int viewHeight = activityRootView.getHeight(); 
      int heightDiff = rootViewHeight - viewHeight; 
      if (heightDiff > 100) { // 99% of the time the height diff will be due to a keyboard. 
       isSoftkey[0] = true; 
      } 
     } 
    }); 
    return isSoftkey[0]; 
} 

public int getStatusBarHeight(){ 
    int result=0; 
    int resourceId= mContext.getResources().getIdentifier("status_bar_height", "dimen", "android"); 
    if(resourceId >0) 
     result = mContext.getResources().getDimensionPixelSize(resourceId); 

    return result; 
} 

ответ

0

Используйте это:

@Override 
public void onAttachedToWindow() { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 

Или установить манифест как:

<action android:name="android.intent.action.MAIN" />    
<category android:name="android.intent.category.HOME" />     
<category android:name="android.intent.category.DEFAULT" />    
<category android:name="android.intent.category.MONKEY"/> 
+0

ее не работает для Lolipop устройств –

+0

попробуйте следующее: @Override public void onAttachedToWindow() { this.getWindow(). SetType (WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); KeyguardManager keyguardManager = (KeyguardManager) getSystemService (KEYGUARD_SERVICE); KeyguardLock lock = keyguardManager.newKeyguardLock (KEYGUARD_SERVICE); lock.disableKeyguard(); } –

0
@Override 
public void onAttachedToWindow() { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG); 
    KeyguardManager keyguardManager = (KeyguardManager) getSystemService(KEYGUARD_SERVICE); 
    KeyguardLock lock = keyguardManager.newKeyguardLock(KEYGUARD_SERVICE); 
    lock.disableKeyguard(); 
} 
0

попробовать это,

InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); 

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

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