Android监听Home键和最近任务

 
  
IntentFilter home_filter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
registerReceiver(new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS))
        {
            String reason = intent.getStringExtra("reason");
            if (reason != null)
            {
                if (reason.equals("homekey")) {
                    Log.i(TAG,"homekey");
                }else if(reason.equals("recentapps")){
                    Log.i(TAG,"recentapps");
                }
            }
        }
    }
},home_filter);
 
  
其实这个方法也并不是官方API提供的,而是其他热心网友发现的。否则你很难想到关闭系统对话框会和Home键发生关系。然而看到framework代码后,发现每次按Home键或者触发最近任务就会发送Intent.ACTION_CLOSE_SYSTEM_DIALOGS。 另外关机还有关闭对话框也会发送该广播。所以要获得reason字段才能知道,是何原因发送的广播。就
intent.getStringExtra("reason");官方也没解释。所以此方法也是一个讨巧的方法。一旦framework有改动,此方法不一定会再有效

你可能感兴趣的:(android)