OSDN Git Service

Don't assume device has a status bar (TVs don't)
authorRobin Lee <rgl@google.com>
Wed, 5 Jul 2017 07:26:25 +0000 (09:26 +0200)
committerRobin Lee <rgl@google.com>
Wed, 5 Jul 2017 07:42:49 +0000 (07:42 +0000)
If this block of code doesn't find a StatusBar, it crashes the
ActivityThread, which restarts every couple of seconds right up
until the OS has had enough and decides to reboot.

Test: flashall && adb logcat | grep '.SystemUIService: java.lang.NullPointerException'
Bug: 62940302
Change-Id: Ib0adbadbc467df4941e03c7506762a7ec302d673

packages/SystemUI/src/com/android/systemui/RoundedCorners.java

index 73e0d7f..40ea4ec 100644 (file)
@@ -93,16 +93,17 @@ public class RoundedCorners extends SystemUI implements Tunable {
     private void setupPadding(int padding) {
         // Add some padding to all the content near the edge of the screen.
         StatusBar sb = getComponent(StatusBar.class);
-        View statusBar = sb.getStatusBarWindow();
-
-        TunablePadding.addTunablePadding(statusBar.findViewById(R.id.keyguard_header), PADDING,
-                padding, FLAG_END);
-
-        FragmentHostManager fragmentHostManager = FragmentHostManager.get(statusBar);
-        fragmentHostManager.addTagListener(CollapsedStatusBarFragment.TAG,
-                new TunablePaddingTagListener(padding, R.id.status_bar));
-        fragmentHostManager.addTagListener(QS.TAG,
-                new TunablePaddingTagListener(padding, R.id.header));
+        View statusBar = (sb != null ? sb.getStatusBarWindow() : null);
+        if (statusBar != null) {
+            TunablePadding.addTunablePadding(statusBar.findViewById(R.id.keyguard_header), PADDING,
+                    padding, FLAG_END);
+
+            FragmentHostManager fragmentHostManager = FragmentHostManager.get(statusBar);
+            fragmentHostManager.addTagListener(CollapsedStatusBarFragment.TAG,
+                    new TunablePaddingTagListener(padding, R.id.status_bar));
+            fragmentHostManager.addTagListener(QS.TAG,
+                    new TunablePaddingTagListener(padding, R.id.header));
+        }
     }
 
     private WindowManager.LayoutParams getWindowLayoutParams() {