2014-01-17 101 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 
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

相關問題