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有改動,此方法不一定會再有效