2014-01-17 2 views
4

Я разрабатываю приложение, и мне нужно, чтобы отключил виртуальные кнопки, когда приложение запущено, так как есть кнопки из приложения. Может ли кто-нибудь помочь мне в том, как это кодировать? Заранее спасибо.Отключить кнопки устройства Android при запуске приложения

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    setContentView(R.layout.activity_1st_main); 

    getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
} 

@SuppressWarnings({ "unchecked", "rawtypes" }) 
private final List hijackKeys = new ArrayList(Arrays.asList(
     KeyEvent.KEYCODE_VOLUME_DOWN, KeyEvent.KEYCODE_VOLUME_UP, 
     KeyEvent.KEYCODE_BACK, KeyEvent.KEYCODE_HOME)); 

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 
    if (hijackKeys.contains(event.getKeyCode())) { 
     return true; 
    } else { 
     return super.dispatchKeyEvent(event); 
    } 
} 

enter image description here

+2

Вы можете скрыть панель навигации (не отключить, просто скрыть) от 4,0 см [developer.android.com/navigation](https://developer.android.com/training/system-ui/ navigation.html) – hypd09

+4

Вы можете отключить кнопку «Назад» и кнопку «Меню» путем переопределения, но вы не можете отключить кнопку «Главная» ... –

+0

Привет @ hypd09, спасибо за ответ! Однако код, который вы указали, не работает. – androidBoomer

ответ

3

Это лучшее решение для этого.

public class BaseActivity extends Activity { 
    public void onWindowFocusChanged(boolean hasFocus) { 
     super.onWindowFocusChanged(hasFocus); 

      Log.d("Focus debug", "Focus changed !"); 

     if(!hasFocus) { 
      Log.d("Focus debug", "Lost focus !"); 

      Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS); 
      sendBroadcast(closeDialog); 
     } 
    } 
} // all credit goes here: http://www.juliencavandoli.com/how-to-disable-recent-apps-dialog-on-long-press-home-button/ 
+1

Наконец-то вы получили ответ +1 –

2

Override Назад Кнопка с ниже код

@Override 
public void onBackPressed() { 
    // TODO Auto-generated method stub 
    //super.onBackPressed(); // nothing to do here 
} 

И теперь для кнопки меню попробовать, как этот

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
// getMenuInflater().inflate(R.menu.main, menu); // comment this line to disable menu button 
    return true; 
} 

И лучший подход, чтобы отключить кнопки меню просто удалить onCreateOptionsMenu метод из вашего класса активности ...

+0

Знаете ли вы, как отключить последнюю кнопку задач/приложений? Тот, у которого есть кнопка «Главная» ... – androidBoomer

+1

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

+1

@TwistedDroid: попробуйте этот ответ, это может помочь вам 'http:// stackoverflow.com/questions/17769367/android-intercept-recent-apps-button/17774643 # 17774643' –

0

Я действительно не знаю, что это работает или нет. пожалуйста, попробуйте это.

Добавить это в Manifest.xml для вашей основной деятельности:

<category android:name="android.intent.category.DEFAULT" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
<category android:name="android.intent.category.HOME" /> 

source found from stack overflow. счастливым кодирования ..

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

@Override 
public void onAttachedToWindow() { 
    //only desable home button 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); 
    super.onAttachedToWindow(); 
} 
+0

Я на самом деле сделал это – androidBoomer

+0

ответ обновлен. –

+0

Не работает ни ... – androidBoomer

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