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>