关于屏蔽HOME键和全屏
2012-03-28 23:08
211 查看
今天接到一个需求,要求在我之前写的应用里增加命令行带参数形式的启动方式,在命令行启动的时候要求屏蔽掉HOME键和回退键,并且去掉 titlebar 和 status bar (说白了就是全屏),本来认为很简单的一个需求,却发现纠结了很久,所以今天特意在此整理下。
一 首先命令行启动 : 很简单
1. 在要启动的Activity 中的 onCreate方法中 得到Intent, 然后用一个全局的 boolean 标识是否为 参数启动 代码大致如下
XXXActivity{
private boolean mLanchOut;
onCreate(){
Intent intent= getIntent();
mLaunchOut = intent.getExtraBoolean("launchOut",false); // launchOut 为外部传进来参数的key值
}
}
2 启动一个命令窗口 adb shell 进去之后 然后 am start -n com.***.***/com.***.***.XXX -ez launchOut true (注:com.***.*** 表示你应用程序的包名 , com.***.***.XXX 表示你要启动的那个Activity的那个类的完整类名);
这样的话 以后的要依据做是否为参数启动做相应的操作就根据 mLaunchOut的值来判断
二 然后是屏蔽到back 键 也很简单
在Activity类中重写 onBackPress()方法
@Override
public void onBackPressed() {
..... // 在这里写当按下back 键的时候你要做的操作
}
三 屏蔽 HOME键 这个是普通的按键事件捕捉不到的
要重写onAttchedToWindow() 然后在里面设定 设置 window的 type 类型为 KEYGUARD;
@Override
public void onAttachedToWindow(){
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
四 设置全屏 这个具体就不细说了 两种方法 一种是代码中设定 ,一种是 Manifest.xml文件中配置 baidu 一搜到处都是
这时候 关键问题来了 当设置了屏蔽Home按键的时候 ,就全屏不了了 status bar(状态栏)就一直是存在的了,各种设置的方法 排列组合了一遍,发现还是不行,问题一直是存在,去baidu上搜了一把,发现碰到这种问题的人还不在少数,大家的解决方法要么就是不做HOME键 屏蔽了 要么就是 开一个线程啊 每隔一段时间就监听一下什么的, 这样 效率自然就会降低了 ,纠结ing!
最终经历了无数次失败了之后找到解决方法了:
用一个Activity 做缓冲 在这个缓冲Activity 中设置全屏 然后从这个缓冲Activity 跳转到 到目的Activity 中 在目的Acitivity 中设定 屏蔽HOME键 即上面归纳的第三步
比如说 我们的目的Activity 叫他为TargetActivity 缓冲 Activity 叫 LoadActivity
LoadActivity.java 我们在这个Activity的manifest .xml中配置 Theme 为 noTitleBar.FullScreen
class LoadActivity{
onCreate(){
Intent intent = new Intent();
intent.setClass(this,TargetActivity.class);
startActivity();
this.finish();
}
}
TargetActivity.java
class TargetActivity{
onCreate(){
。。。//设置全屏
}
@Override
public void onAttachedToWindow(){
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
}
这样 我们要启动 TargetActivity的时候 就启动LoadActivity 这时候 全屏和屏蔽HOME键就同时做到了
一 首先命令行启动 : 很简单
1. 在要启动的Activity 中的 onCreate方法中 得到Intent, 然后用一个全局的 boolean 标识是否为 参数启动 代码大致如下
XXXActivity{
private boolean mLanchOut;
onCreate(){
Intent intent= getIntent();
mLaunchOut = intent.getExtraBoolean("launchOut",false); // launchOut 为外部传进来参数的key值
}
}
2 启动一个命令窗口 adb shell 进去之后 然后 am start -n com.***.***/com.***.***.XXX -ez launchOut true (注:com.***.*** 表示你应用程序的包名 , com.***.***.XXX 表示你要启动的那个Activity的那个类的完整类名);
这样的话 以后的要依据做是否为参数启动做相应的操作就根据 mLaunchOut的值来判断
二 然后是屏蔽到back 键 也很简单
在Activity类中重写 onBackPress()方法
@Override
public void onBackPressed() {
..... // 在这里写当按下back 键的时候你要做的操作
}
三 屏蔽 HOME键 这个是普通的按键事件捕捉不到的
要重写onAttchedToWindow() 然后在里面设定 设置 window的 type 类型为 KEYGUARD;
@Override
public void onAttachedToWindow(){
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
四 设置全屏 这个具体就不细说了 两种方法 一种是代码中设定 ,一种是 Manifest.xml文件中配置 baidu 一搜到处都是
这时候 关键问题来了 当设置了屏蔽Home按键的时候 ,就全屏不了了 status bar(状态栏)就一直是存在的了,各种设置的方法 排列组合了一遍,发现还是不行,问题一直是存在,去baidu上搜了一把,发现碰到这种问题的人还不在少数,大家的解决方法要么就是不做HOME键 屏蔽了 要么就是 开一个线程啊 每隔一段时间就监听一下什么的, 这样 效率自然就会降低了 ,纠结ing!
最终经历了无数次失败了之后找到解决方法了:
用一个Activity 做缓冲 在这个缓冲Activity 中设置全屏 然后从这个缓冲Activity 跳转到 到目的Activity 中 在目的Acitivity 中设定 屏蔽HOME键 即上面归纳的第三步
比如说 我们的目的Activity 叫他为TargetActivity 缓冲 Activity 叫 LoadActivity
LoadActivity.java 我们在这个Activity的manifest .xml中配置 Theme 为 noTitleBar.FullScreen
class LoadActivity{
onCreate(){
Intent intent = new Intent();
intent.setClass(this,TargetActivity.class);
startActivity();
this.finish();
}
}
TargetActivity.java
class TargetActivity{
onCreate(){
。。。//设置全屏
}
@Override
public void onAttachedToWindow(){
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
}
这样 我们要启动 TargetActivity的时候 就启动LoadActivity 这时候 全屏和屏蔽HOME键就同时做到了
相关文章推荐
- 关于设置全屏后与屏蔽Home键的冲突问题,盛传的几种做法,未解决!
- 屏蔽Home键之后应用不能全屏了
- 关于android 锁屏应用屏蔽home键的总结
- 关于屏蔽home键的理解
- Android开发_关于如何屏蔽Home键
- 关于屏蔽MENU键,返回键,Home键等代码。
- 关于2.3版本以下屏蔽Home键的方法(2.3版本中的方法一直寻找中)
- 关于Android app首次安装完成后在安装界面直接“打开”应用再按home键返回桌面,重新进入app重复实例化launcher activity的问题的解决
- 关于Mobile的全屏实现的一点心得
- 关于全屏和取消标题栏
- 关于接地:数字地、模拟地、信号地、交流地、直流地、屏蔽地、浮地
- 关于网页打开新窗口的解决方案,拒绝屏蔽
- android Home键 屏蔽,捕获,修改
- Android程序开发中关于设置全屏无效问题
- 关于Android主题splash全屏和主页面的沉浸式状态栏
- 另辟思路解决Android 4.0以后不能监听和屏蔽Home键的问题
- android屏蔽HOME键的方法
- Android下Dialog及Activity屏蔽Home键详解
- 关于如何在微信里面让video不全屏播放。
- 关于winForm窗体最大化时全屏及遮盖任务栏问题