Android利用广播监听按下HOME和RECENT_APPS键

MainActivity如下:

package cn.testhomekey;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.IntentFilter;
/**
 * Demo描述:
 * 利用广播监听设备的HOME和RECENT_APPS键被按下
 *
 * 参考资料:
 * http://blog.csdn.net/imyfriend/article/details/8293399
 * Thank you very much
 */
public class MainActivity extends Activity {
    private HomeKeyBroadcastReceiver mHomeKeyBroadcastReceiver;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
    @Override
    protected void onStart() {
    	super.onStart();
    	mHomeKeyBroadcastReceiver=new HomeKeyBroadcastReceiver();
    	IntentFilter intentFilter=new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
    	this.registerReceiver(mHomeKeyBroadcastReceiver,intentFilter);
    }
	@Override
	protected void onDestroy() {
		if (mHomeKeyBroadcastReceiver!=null) {
			this.unregisterReceiver(mHomeKeyBroadcastReceiver);
		}
		super.onDestroy();
	}
}

HomeKeyBroadcastReceiver如下:

package cn.testhomekey;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class HomeKeyBroadcastReceiver extends BroadcastReceiver {
	private final String SYSTEM_REASON = "reason";
	//Home键
	private final String SYSTEM_HOME_KEY = "homekey";
	//最近使用的应用键
	private final String SYSTEM_RECENT_APPS = "recentapps";

	@Override
	public void onReceive(Context context, Intent intent) {
		String action = intent.getAction();
		if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {
			String systemReason = intent.getStringExtra(SYSTEM_REASON);
			if (systemReason != null) {
				if (systemReason.equals(SYSTEM_HOME_KEY)) {
					System.out.println("按下HOME键");
				} else if (systemReason.equals(SYSTEM_RECENT_APPS)) {
					System.out.println("按下RECENT_APPS键");
				}
			}
		}

	}

}

 

Manifest.xml如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="cn.testhomekey"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="cn.testhomekey.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- 注册广播 -->
        <receiver android:name="cn.testhomekey.HomeKeyBroadcastReceiver">

        </receiver>

    </application>

</manifest>

 

main.xml如下:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="监听HOME和RECENT_APPS键"
        android:layout_centerInParent="true"
    />

</RelativeLayout>

 

时间: 2024-10-27 22:02:34

Android利用广播监听按下HOME和RECENT_APPS键的相关文章

Android利用广播监听按下HOME和电源键

MainActivity如下: package cc.testhome; import cc.testhome.HomeKeyObserver.OnHomeKeyListener; import cc.testhome.PowerKeyObserver.OnPowerKeyListener; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 利用广播监听Home键的按下和长按Home键 * 利用广播监听电

Android 利用广播监听usb连接状态(变化情况)

废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.lgs.test.testcode.receiver; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.widget.Toast; /** * Create

Android利用Logcat监听应用程序本身被卸载

MainActivity如下: package cc.testremoveapp; import android.os.Bundle; import android.app.Activity; import android.content.Intent; /** * Demo描述: * 监听应用程序本身被卸载 * * 注意权限: * <uses-permission android:name="android.permission.READ_LOGS"></uses-

三星-Android home键监听,用广播监听ACTION_CLOSE_SYSTEM_DIALOGS

问题描述 Android home键监听,用广播监听ACTION_CLOSE_SYSTEM_DIALOGS Android home键监听,用广播监听ACTION_CLOSE_SYSTEM_DIALOGS,三星手机监听不到,而且还拦截了这一事件,都不退回到主界面. 监听代码如下: @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (act

Android 广播监听网络状态详解及实例代码

Android 广播监听网络状态 我们在做多线程下载的时候,或者是在加载h5界面的时候,常常会遇到网络状态不好或者断网的时候,在这或者当我们的应用程序启动没有退出的时候,我们就需要对网络状态监听加以判断. 这时候,我们一般情况下,两种方式进行处理. 第一: 开启服务. 第二:发送广播的形式. 建议采用方法二. 源代码如下: 广播: /** * 有网络的广播 */ BroadcastReceiver connectionReceiver = new BroadcastReceiver() { @O

监听按下电源键锁屏以及解屏

main.xml如下: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools

Android下载进度监听和通知的处理详解

本文实例为大家分享了Android下载进度监听和通知的具体代码,供大家参考,具体内容如下 下载管理器 关于下载进度的监听,这个比较简单,以apk文件下载为例,需要处理3个回调函数,分别是: 1.下载中 2.下载成功 3.下载失败 因此对应的回调接口就有了: public interface DownloadCallback { /** * 下载成功 * @param file 目标文件 */ void onComplete(File file); /** * 下载失败 * @param e */

android 有办法 监听 手机 有没有发出声音 或 获取当前发出声音的音量吗

问题描述 android 有办法 监听 手机 有没有发出声音 或 获取当前发出声音的音量吗 又或者说 监听 当前手机自己发出的声音的分贝,急急急, 求 解决 解决方案 个人认为,你得和硬件人员先沟通下,或者直接咨询平台公司,看支持这个功能不,就如感光sensor一样,都是需要硬件和平台支持的.

Android零基础入门第34节:Android中基于监听的事件处理

原文:Android零基础入门第34节:Android中基于监听的事件处理    上一期我们学习了Android中的事件处理,也详细学习了Android中基于监听的事件处理,同时学会了匿名内部类形式,那么本期继续来学习其他四种事件监听器.     一.使用内部类作为事件监听器       和上面的匿名内部类不同,使用内部类可以在当前类中复用该监听器类:因为监听器类是外部类的内部类,所以可以自由访问外部类的所有界面组件,这也是内部类的两个优势.     接下来通过一个简单的示例程序来学习Andro