原
在从事Android开发一年多以来,一直在关注GitHub和CSDN里边一些大牛的博客,自己还从来没有发过一次博客,这段时间比较闲,写写自己最近的涉及到的一些东西。
上个周末,一个朋友叫我帮忙弄一个demo,可以屏蔽Home 键。
大家都知道自从Android2.3之前我们是可以通过以下代码来屏蔽。
public boolean onKeyDown( int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == event.KEYCODE_HOME) {
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
现在Android4.0用这段代码是不行的。因为系统已经屏蔽掉了。所以要依靠这种方式来屏蔽是行不通的。我们想但我们每次按Home键的时候都进入到Launcher应用,
用这个思路我们能否把自己的应用写成一个Launcher。对的,当然可以,而且也很简单。在AndroidMainfest.xml文件中给Activity添加如下属性即可。
此时你安装应用时会有叫你选择用那一个桌面。如果你没有选择始终的时候,每次按Android键都会提示这个款,很麻烦,而且这样也没有达到我们的预期要屏蔽掉Home键。
下面是我的思路:在你进入自己的应用的时候来一个设置默认桌面向导,这样屏蔽掉了Home键,退出应用时清除默认桌面设置。
但有些手机是不能设置默认桌面的比如华为H60,荣耀3C。这些手机厂商修改了Framework层咱们没办法,但大部分还是可以滴。
以下是调出设置默认桌面的入口代码:
String mtyb = android.os.Build.BRAND;// 手机品牌
Log.v("TAG", mtyb);
//针对小米手机的设置
if (mtyb.contains("Xiaomi")) {
startActivity(new Intent(Settings.ACTION_SETTINGS));
} else {
//针对其他手机的设置
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory("android.intent.category.HOME");
HelloActivity.this.startActivity(intent);
HelloActivity.this.startActivityForResult(intent, 0);
}
好了设置OK了。
那么问题来了,怎么在退出应用的时候清除设置呢,难道又调出那个引导来吗?这个我也琢磨了一会儿,之后发现通过手机设置里边的用用管理,每个应用里边有一个清除默认设置这个按钮,点击这个按钮之后即可清除默认设置。哇塞,太高兴了!用代码自动清除当然首选想到PackageManager了。翻翻开发文档,果然有啊!
PackageManager localPackageManager = context.getPackageManager();
//清除默认设置。
localPackageManager.clearPackagePreferredActivities("com.example.lanuchertest5");
哈哈。。。就这样轻松的恢复到了系统的桌面,不会影响到日常使用。
在GitHub中还有一些大牛用另外一种方法实现,但存在一些问题比如一些焦点控制不了,有些手机不支持。
大家也可以参考一下:https://github.com/shaobin0604/Android-HomeKey-Locker。
转载请注明出处:http://blog.csdn.net/woshizisezise/article/details/51598684前言:如题,安卓的这个问题,真的很少有人关注到,但是一旦你知道而别...博文来自: 我是紫色紫色的专栏
开发过程中,测试发现app在视频时,华为手机点击home键返回到桌面,再点击app图标,视频页面被干掉了。经过测试,发现点击app图标后是重新启动了app,也试了其他的app有的也是干掉了Main以上...博文来自: wang_dasheng的博客
问题现象:第一次安装应用,不要用adb安装,而是要用系统的安装器去安装,安装完成后,直接点击打开,不要点击完成,进入应用,随便点开其他界面,点击home键让应用进入后台,然后再点击应用的图标进入应用,...博文来自: u010351494的专栏
之前点击Home键后再点击App图标,会回到原来的界面。今天重新打包后,但是在Debug模式下,一切正常,但是把打完包的apk(Release)安装在其他手机上时,回到桌面后点击图标会重新打开启动页。...博文来自: guozikai的博客
在项目中,遇到一个问题百思不得其解,那就是:我在app使用过程中,点击了home键,然后去看看微信之类的其他应用,这个时候再点击app桌面的图标,这个时候app是重新启动的,而不是从上次停止的界面开始...博文来自: judy50的博客
总体来说:http://www.open-open.com/lib/view/open1476412527375.html这个大哥是正确的。这次我们需求是监狱在看插播电视内容,遥控器首页、返回、设置等...博文来自: yang_niuxxx的博客
AndroidTV屏蔽返回键重写OnkeyDown方法@OverridepublicbooleanonKeyDown(intkeyCode,KeyEventevent){if(KeyEvent.KE...博文来自: 小Zang爱吃肉
转载请标明原文地址谢谢;之前遇到过需要屏蔽HOME键的场景,百度搜了很多根本不好使,Framework层又不能动。后来找到了,亲测可用,今天抽空贴出来;下面不废话,直接上代码@Overridepubl...博文 qfj6274364的博客
Settings.System.putInt(getContentResolver(),"sys.home_key_to_app",1);Settings.System.putInt(getConte...博文来自: AiShengHuo的博客
这都是相对比较简单的都可以在framework层修改;屏蔽下拉框:frameworks/base/packages/SystemUI/src/com/android/systemui/statusba...博文来自: 影子在动
此方案,是为了锁屏做的。不适用于普通Activity的屏蔽home键。方案一:监听onKeyDown事件@OverridepublicbooleanonKeyDown(intkeyCode,KeyEv...博文来自: 一品大帅的专栏
这几天做一个锁屏的项目,锁屏的难点在于返回键和home键的屏蔽,关于home键的屏蔽也困扰了我很久,最后还是顺利屏蔽掉了,这里写出来总结一下。1、返回键的屏蔽,直接贴代码,原理监听返回键,让他不做任...博文来自: qq_28741899的博客
我们平时在Android开发中,很多时候逻辑是需要屏蔽Home键的,一般情况下分为Activity的屏蔽Home键和非Activity的屏蔽。一:Activity屏蔽Home按键的方法第一种方...博文来自: LYJ的IT生活
Android4.0以前如果想要拦截或者处理物理HOME按键,可以通过重写onKeyDown函数进行拦截,代码如下:@OverridepublicbooleanonKeyDown(intkeyCode...博文来自: songshizhuyuan的专栏
在2.2,2.3版本上重写下面方法就能重写home键:publicvoidonAttachedToWindow(){this.getWindow().setType(WindowManager.Lay...博文来自: YiRong
先说结论:所有修改只适用定制系统有系统源码的场景,否则上层App只能监听到HOME按键的广播(而且由于Home键的特殊性,完全可靠的监听同样需要在framework层修改源码),无办法拦截,下面的方法...博文来自: pq5357的博客
在2.3版本yixia重写下面方法就能重写home键publicvoidonAttachedToWindow(){this.getWindow().setType(WindowManager....博文来自: oMengHen1的专栏
(1)屏蔽返回键:重写onBackPressed()即可,不调用超类方法@OverridepublicvoidonBackPressed(){	//super.onBackPressed();}(...博文来自: 大熊的Android开发之旅
上一次由于项目的需要,需要在app级屏蔽home键,返回键等键所在一栏。百度各种无结果。于是就自己研究了一翻。发现了两种可行的方法:方法一:用全屏悬浮窗去掉home键,返回键等键所在一栏代码如下(直接...博文来自: qq_18720507的博客
这几个“按键”的触发,都会产生一个Action==Intent.ACTION_CLOSE_SYSTEM_DIALOGS的通知区分他们三个的不同事件的参数,就是随着Intent带过来的reason字符串...博文来自: gao_chun