Android实现广播监听HOME键操作

先写了个Service,在服务中通过广播来监听HOME键操作:

public class HomeService extends Service{

private MonitoHomeReceiver mHomeBroadcastReceiver;

@Override

public IBinder onBind(Intent intent) {

return null;

}

@Override

public void onCreate() {

super.onCreate();

mHomeBroadcastReceiver = new MonitoHomeReceiver();

/**

* Android对屏幕下方常用按键消息处理是不一致的:

* 1、搜索按键的消息在onKeyDown或者onKeyUp中接收;

* 2、菜单按键的消息在onCreateOptionsMenu、onKeyDown或onKeyUp方法中接收;

* 3、返回按键的消息可以在onBackPressed、onKeyDown或onKeyUp方法中接收。

* 对于Home按键消息的处理,既不能通过onKeyDown、onKeyUp接收到,android也没有提供专有的方法接收按键消息

* 但办法总是有的,点击Home按键时都会发出一个action为Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播,通过注册它来监听Home按键消息

*/

IntentFilter homeFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);

registerReceiver(mHomeBroadcastReceiver, homeFilter);

}

public class MonitoHomeReceiver extends BroadcastReceiver{

final String HOME_DIALOG_REASON = "homereason";

final String HOME_DIALOG_REASON_HOME = "homekey";

@Override

public void onReceive(Context context, Intent intent) {

String action = intent.getAction();

if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) {

String reason = intent.getStringExtra(HOME_DIALOG_REASON);

if (reason != null && reason.equals(HOME_DIALOG_REASON_HOME)) {

Toast.makeText(getApplicationContext(), "点击Home键", Toast.LENGTH_SHORT).show();

return;

}

}

}

}

@Override

public void onDestroy() {

unregisterReceiver(mHomeBroadcastReceiver);

mHomeBroadcastReceiver = null;

super.onDestroy();

}

}

然后在Activity中启动Service:

public class MainActivity extends Activity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

/**按钮点击事件*/

findViewById(R.id.test_home_btn).setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

Intent intent = new Intent(MainActivity.this,HomeService.class);

startService(intent);

}

});

}

}

最后就是个简单的布局文件:

<LinearLayout 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"

android:orientation="vertical" >

<Button

android:id="@+id/test_home_btn"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="测试Home键" />

</LinearLayout>

最后不要忘记在AndroidManifest.xml中用<Service></Service>标签注册HomeService 服务。

时间: 2024-08-29 13:34:51

Android实现广播监听HOME键操作的相关文章

Android -- 使用广播监听Home键

//广播监听事件类 public class HomeKeyEventBroadCastReceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //do what you want System.exit(0); } } private HomeKeyEventBroadCastReceiver homeKeyEventReceiver; prote

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

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 通过广播监听网络连接状况

首先添加以下权限 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE&quo

Android 监听Home键

游戏需要统计用户退出游戏是按的返回键还是home,因为返回键是自己cocos2dx做的监听,所以这里说一下android Activity里监听Home键方法,亲测可用,这里做个备份其中也是参考别人的代码实现的,路径没有记住,如有雷同,望见谅-- 这里使用的是广播的形式监听Home操作的方法: 首先在MainActivity里添加如下广播,生成一个成员变量:  private final BroadcastReceiver homeReceiver = new BroadcastReceiver

android应用程序监听SMS Intent广播

当设备接收到一条新的SMS消息时,就会广播一个包含了android.provider.Telephony.SMS_RECEIVED动作的Intent. 对于应用程序监听SMS Intent广播,首先需要添加RECEIVE_SMS权限.通过在应用程序manifest中添加一个uses-permission,如下面的片段所示: <uses-permission android:name="android.permission.RECEIVE_SMS"/> AndroidMani

Android监听Home键的完美解决方案

相信有不少朋友在开发过程中需要监听HOME键的需求,现本人将代码奉上,希望对大家有所帮助! import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; public class HomeWatcher { private static final String TAG = "

大叔也说Xamarin~Android篇~监听返回键,单击返回某个webView,双击退出

原文:大叔也说Xamarin~Android篇~监听返回键,单击返回某个webView,双击退出 这个操作在原生android里是很容易实现的,在xamarin里也不难,在activity里有方法OnKeyDown,我们只需要重写一下就可以了,然后通过webView重新加载到要返回的页面即可,当然操作有些死板,但还是有着不错的效果! 实现的原理就是在activity里设置一个时间,单击后把这个时间赋值并与当前时间进行比较,如果在2秒内,就认为是双击操作,当然这个时间间隔你可以自己设置,在认为是双

另辟思路解决 Android 4.0.4 不能监听Home键的问题

问题描述: 自从Android 4.0以后,开发人员是不能监听和屏蔽Home键的,对于KEYCODE_HOME,官方给出的描述如下: Home key. This key is handled by the framework and is never delivered to applications. 所以,除非修改Framework,都不能直接监听Home键了,网上有朋友说监听Log日志,但是现在按Home键是不显示Log日志的,而且不同的手机型号即使显示也不会一样. 在网上找了好多方法都

Android WindowManager 监听返回键及home键

一.监听home键盘,Android Home键系统负责监听,捕获后系统自动处理.有时候,我们需要监听home键处理自己的逻辑,监听方法如下: /** * 监听home键广播 */ private final static BroadcastReceiver homeListenerReceiver = new BroadcastReceiver() { final String SYSTEM_DIALOG_REASON_KEY = "reason"; final String SYS