--- a/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2028,6 +2028,31 @@ public class PhoneWindowManager implements WindowManagerPolicy {
filter = new IntentFilter(Intent.ACTION_USER_SWITCHED);
context.registerReceiver(mMultiuserReceiver, filter);
+ //reboot broadcasts
+ filter=new IntentFilter();
+ filter.addAction("android.intent.action.reboot");
+ context.registerReceiver(mrebootReceiver, filter);
+
+ //shutdown broadcasts
+ filter=new IntentFilter();
+ filter.addAction("android.intent.action.shutdown");
+ context.registerReceiver(mshutdownReceiver, filter);
+
+ //factoryReset broadcasts
+ filter=new IntentFilter();
+ filter.addAction("android.intent.action.factoryReset");
+ context.registerReceiver(mfactoryResetReceiver, filter);
+
+ //hide_navigationbar broadcasts
+ filter=new IntentFilter();
+ filter.addAction("com.android.action.hide_navigationbar");
+ context.registerReceiver(mhide_navigationbarReceiver, filter);
+
+ //display_navigationbar broadcasts
+ filter=new IntentFilter();
+ filter.addAction("com.android.action.display_navigationbar");
+ context.registerReceiver(mdisplay_navigationbarReceiver, filter);
+
mVibrator = (Vibrator)context.getSystemService(Context.VIBRATOR_SERVICE);
mLongPressVibePattern = getLongIntArray(mContext.getResources(),
com.android.internal.R.array.config_longPressVibePattern);
@@ -4515,6 +4540,51 @@ public class PhoneWindowManager implements WindowManagerPolicy {
}
};
+ BroadcastReceiver mrebootReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mPowerManager.reboot(null);
+ }
+ };
+
+ BroadcastReceiver mshutdownReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ mPowerManager.shutdown(false, null, true);
+ }
+ };
+
+ BroadcastReceiver mfactoryResetReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Intent FSintent = new Intent(Intent.ACTION_FACTORY_RESET);
+ FSintent.setPackage("android");
+ FSintent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+ intent.putExtra(Intent.EXTRA_REASON,
+ "CryptKeeper.showFactoryReset() corrupt=" + true);
+ mContext.sendOrderedBroadcastAsUser(FSintent, UserHandle.CURRENT,
+ null, null, null, 0, null, null);
+ }
+ };
+
+ BroadcastReceiver mhide_navigationbarReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Intent mIntent = new Intent("action.HIDE_STATUSBAR");
+ mContext.sendOrderedBroadcastAsUser(mIntent, UserHandle.CURRENT,
+ null, null, null, 0, null, null);
+ }
+ };
+
+ BroadcastReceiver mdisplay_navigationbarReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Intent mIntent = new Intent("action.SHOW_STATUSBAR");
+ mContext.sendOrderedBroadcastAsUser(mIntent, UserHandle.CURRENT,
+ null, null, null, 0, null, null);
+ }
+ };
+
// Called on the PowerManager's Notifier thread.
@Override
public void startedGoingToSleep(int why) {