Android屏蔽Home键,适配所有版本
16lz
2021-01-25
在2.2,2.3版本上重写下面方法就能重写home键:
public void onAttachedToWindow() { this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD); super.onAttachedToWindow(); }但是在4.0以上就不能用了。 刚刚发现4.0上还有一种方法可以屏蔽和重写Home键,而且非常简单。代码如下:
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);//关键代码 setContentView(R.layout.main); }再重写onKey事件即可。
先找到文件PhoneWindowManager.java (frameworks\base\policy\src\com\android\internal\policy\impl)
中的对应方法 interceptKeyBeforeDispatching(WindowState win, KeyEvent event, int policyFlags)
方法一、在其中设定
if ((null != attrs.packageName) && (attrs.packageName.startsWith("com.spreadst.validationtools"){ return 0; }则对应包名的App将屏蔽掉home键,该方法只对某个特定的App有用。
方法二、在其中设定
final int flag = attrs.flags; if ((flag & WindowManager.LayoutParams.FLAG_HOMEKEY_DISPATCHED) != 0) { // the window wants to handle the home key, so dispatch it to it. return 0; }则只需在需要屏蔽home键的Activity的onCreate()中添加
public static final int FLAG_HOMEKEY_DISPATCHED = 0x80000000;this.getWindow().setFlags(FLAG_HOMEKEY_DISPATCHED, FLAG_HOMEKEY_DISPATCHED);
即可
更多相关文章
- android 常用Bitmap处理方法收集:普通裁剪,缩放,圆形裁剪
- Android(安卓)Notification.Builder通知案例分享
- Android中调用System.exit(0)
- Android(安卓)图片处理方法大全
- Android(安卓)Touch 事件的分发和消费机制
- Android百度定位API使用方法
- 【Android】继承SimpleCursorAdapter定制Adapter
- Android模拟器的使用方法(Linux)
- 【转】Android(安卓)解析如何获取SDCard 内存