您的位置:首页 > 移动开发 > Android开发

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

2014-06-10 18:08 190 查看
能百度这个问题的应该都试过以前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 大家有解决方法别忘了留言哦
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: