android 4.0以后无法通过更改页面的类型来监听home键了。如果不改源码的情况下,下面的方式可以很好的监听到home键(前提是手机打系统日志,有些手机日志被关闭了(如华为荣耀)就无法监听了)。
protected void onResume()
{
super.onResume();
isTesting=true;
new CatchLogThread().start();
}
class CatchLogThread extends Thread {
@Override
public void run() {
Process mLogcatProc = null;
BufferedReader reader = null;
String line;
while (isTesting) {
try {
// 获取logcat日志信息
mLogcatProc = Runtime.getRuntime().exec(new String[] { "logcat", "ActivityManager:I *:S" });
reader = new BufferedReader(new InputStreamReader(mLogcatProc.getInputStream()),2*1024);
while ((line = reader.readLine()) != null) {
if (line.indexOf("android.intent.category.HOME") > 0) {
isTesting = false;
System.out.println("DDDDDDDDDDDDDDDDDDDDDDDDD");
handler.sendMessage(handler.obtainMessage());
Runtime.getRuntime().exec("logcat -c");//删除日志
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
};
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
startActivity(new Intent(MainActivity.this,MainActivity.class));
Toast.makeText(MainActivity.this, "I Have Home is pressed!!!!!",Toast.LENGTH_LONG).show();
System.out.println("Home is Pressed+++++++++++++++++");
};
};
以上是全部精华代码。要对home键按下后做操作可以在handler中进行。希望可以帮助到一些冥思苦想而不得解的人。
最后记得在AndroidManifest.xml中加读取日志权限:
<uses-permission android:name="android.permission.READ_LOGS"></uses-permission>
分享到:
相关推荐
下面我们将详细介绍如何在Android 4.0以上版本中屏蔽Home键。 首先,我们需要理解Android系统的权限结构。在Android 4.0之前,开发者可以通过注册一个BroadcastReceiver监听ACTION_HOME_KEY_DOWN和ACTION_HOME_KEY_...
标题提到的"屏蔽android4.0以上home按键"是一个关于如何在Android 4.0及以上版本中阻止Home键功能的技术问题。 首先,我们需要了解Android系统的权限和API等级。Android 4.0(API级别14)引入了一些新特性,而...
由于安全性和用户体验考虑,Android不允许随意篡改系统核心行为,包括屏蔽Home键。但是,开发者可以通过创建自定义Launcher或者Service来模拟对Home键行为的控制。下面我们将分步骤讲解如何实现这一目标。 1. 创建...
本篇文章将详细讲解如何在Android 4.0.x版本中实现Home键事件的拦截监听,并对比Android 2.3.x的实现方法。 首先,我们来看在Android 2.3.x版本中常见的Home键事件拦截方法。开发者通常会在`onAttachedToWindow()`...
"安卓键盘输入相关-屏蔽4.0Home键.rar"这个压缩包文件就是针对这样的需求,提供了关于如何在Android 4.0(Ice Cream Sandwich)版本上屏蔽Home键的解决方案。 首先,我们要理解Android系统的权限机制。在Android中,...
本Demo "实测可行的Android 4.x锁屏屏蔽HOME键的Demo" 就是针对这一需求的解决方案,它能在锁屏状态下有效阻止用户按下HOME键,提高应用的安全性和用户体验。 首先,我们要理解Android系统的权限机制。在Android中...
1. **屏蔽Home键** - 自Android 4.0开始,Home键在框架层已被系统直接响应,第三方应用无法直接通过`Activity.onKeyDown`方法拦截。然而,可以通过监听`ACTION_CLOSE_SYSTEM_DIALOGS`广播来检测Home键的按下。当`...