实现方式
监听BroadcastReceiver
事件
- Intent.ACTION_CLOSE_SYSTEM_DIALOGS
具体实现
- 1、创建监听接口
public interface HomeStatusListener {
void onHomeKey();
void onRecentApps();
}
复制代码
实现两个方法:home键、最近app
- 2、创建工具类
public class HomeStatusController {
//定义监听返回常量
private static final String SYSTEM_DIALOG_REASON_KEY = "reason";
private static final String SYSTEM_DIALOG_REASON_RECENT_APPS = "recentapps";
private static final String SYSTEM_DIALOG_REASON_HOME_KEY = "homekey";
private Context mContext;
private IntentFilter mHomeStatusFilter = null;
private HomeStatusListener mHomeStatusListener;
/**
* 构造函数实例IntentFilter对象
* @param context
*/
public HomeStatusController(Context context) {
mContext = context;
mHomeStatusFilter = new IntentFilter();
mHomeStatusFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
}
private BroadcastReceiver mHomeStatusReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if (TextUtils.isEmpty(reason)) {
return;
}
if (SYSTEM_DIALOG_REASON_HOME_KEY.equals(reason)) {
if(mHomeStatusListener!=null){
mHomeStatusListener.onHomeKey();
}
} else if (reason.equals(SYSTEM_DIALOG_REASON_RECENT_APPS)) {
if(mHomeStatusListener!=null){
mHomeStatusListener.onRecentApps();
}
}
}
}
};
//设置监听
public void setHomeStatusListener(HomeStatusListener l) {
mHomeStatusListener = l;
}
//开始监听
public void startListen() {
if (mContext != null) {
mContext.registerReceiver(mHomeStatusReceiver, mHomeStatusFilter);
}
}
//结束监听
public void stopListen() {
if (mContext != null) {
mContext.unregisterReceiver(mHomeStatusReceiver);
}
}
}
复制代码
控制工具主要是实现了广播的注册和回收,并处理广播事件
- 3、广播实现
public class MainActivity extends Activity{
private HomeStatusController mHomeStatusController = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
//TODO
mHomeStatusController = new HomeStatusController(this);
mHomeStatusController.setHomeStatusListener(new HomeStatusListener() {
@Override
public void onHomeKey() {
}
@Override
public void onRecentApps() {
}
});
mHomeStatusController.startListen();
}
@Override
protected void onDestroy() {
mHomeStatusController.stopListen();
super.onDestroy();
}
}
复制代码
实现按下Home键的效果
Intent intent= new Intent(Intent.ACTION_MAIN);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); //如果是服务里调用,必须加入new task标识
intent.addCategory(Intent.CATEGORY_HOME);
startActivity(intent);
复制代码