android4.0以上屏蔽home键的方法(有源代码)

  能百度这个问题的应该都试过以前2.X版本屏蔽home键的方法在4.0以上是不行的  我自己当时也试了很久 因为当时要做一个功能 一个登录界面 未登录不能进入使用本设备 返回键啊什么的很好屏蔽 可就是home键试了很多 都无法实现屏蔽 就在准备放弃的时候 发现了一个东西。

  我代码中有是要通过service中弹出dialog的操作 解决办法是将自定义的dialog设为系统级警告  这样就可以实现通过service弹出dialog 为什么要说这个呢?那是因为我还发现系统警告级别的dialog弹出以后 home键是无效的   相信说到这里大家应该明白点什么了

  我是这么做的 在activity中放一个空布局 然后弹出一个系统级别的自定义dialog 并且设置dialog为全屏模式就可以实现屏蔽home键了   当然dialog的返回键也可以屏蔽掉    这样子就屏蔽掉了返回键和home键了

以下 献上源码:

activity中代码

@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.login);
		//获取自定义dialog的布局
		LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
		View layout = inflater.inflate(R.layout.login_dialog, null);
		
		//创建自定义dialog
		// android.R.style.Theme_DeviceDefault_NoActionBar_Fullscreen 底色是黑色 看不到activity背景
		// android.R.style.Theme_Translucent_NoTitleBar_Fullscreen 底色是透明  能看到activity背景
		//将dialog设为全屏
		Builder mdialog = new AlertDialog.Builder( MainActivity.this,
				android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
		// .setInverseBackgroundForced(true)
		mdialog.setView(layout);
		// 由于是在service里面做dialog弹出 所以要做下面的操作 并且要加入权限 <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
		AlertDialog mDialog = mdialog.create();
		// 设定为系统级警告,关键
		mDialog.getWindow().setType(
				WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
		//屏蔽dialog返回键 注意返回值 如果return不是下面这样 有可能导致edittext中无法删除文字
		mDialog.setOnKeyListener(new OnKeyListener() {
			@Override
			public boolean onKey(DialogInterface dialog, int keyCode,
					KeyEvent event) {
				if ((keyCode == KeyEvent.KEYCODE_BACK)) {
					return true;
				}
				return false;
			}
		});
		mDialog.show();
	}

以上操作会有一个美中不足的地方   就是全屏dialog还是会和屏幕产生一点缝隙   这个问题我用过很多方法都没有解决   最后决定让美工做张图配合activity上面的dialog   大家有解决方法别忘了留言哦



评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值