如何禁用主键

我想locking屏幕。 我想禁用主键,只使用后退键。 我如何做到这一点?

使用此方法禁用android中的主键

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

我find了解决HOME键的方法。 为你的应用程序设置清单

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

现在你的应用程序是一个备用的启动器应用程序。

使用adb,并使用软件包pipe理器禁用启动程序

 pm disable com.android.launcher2 

现在Home键按下将始终保持在同一屏幕上。

这个解决scheme只能工作到3.x。

好吧,这应该是一个很难的问题。 但是,这是一个方法来破解它。

在您的活动中覆盖下面的方法,

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

现在处理这样的关键事件,

 @Override public boolean onKeyDown(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_HOME) { Log.i("Home Button","Clicked"); } if(keyCode==KeyEvent.KEYCODE_BACK) { finish(); } return false; } 

将此代码添加到您的MainActivity类:

 Timer timer; MyTimerTask myTimerTask; @Override protected void onResume() { super.onResume(); if (timer != null) { timer.cancel(); timer = null; } } @Override protected void onPause() { if (timer == null) { myTimerTask = new MyTimerTask(); timer = new Timer(); timer.schedule(myTimerTask, 100, 100); } super.onPause(); } private void bringApplicationToFront() { KeyguardManager myKeyManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); if( myKeyManager.inKeyguardRestrictedInputMode()) return; Log.d("TAG", "====Bringging Application to Front===="); Intent notificationIntent = new Intent(this, MainActivity.class); notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); try { pendingIntent.send(); } catch (PendingIntent.CanceledException e) { e.printStackTrace(); } } public void onBackPressed() { // do not call super onBackPressed. } class MyTimerTask extends TimerTask { @Override public void run() { bringApplicationToFront(); } } 

这不是“家”button的locking,但用户无法长时间(超过100毫秒)切换到另一个应用程序,也许这是你想要的。

要禁用主页button,请尝试以下操作:

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

通知栏拉下的问题可以通过隐藏通知栏来解决:

 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.xxxx); getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN); .... } 

或者在清单中为您的活动或应用程序设置全屏主题:

 android:theme="@android:style/Theme.NoTitleBar.Fullscreen"