android13(T) SystemUI 运营商显示 bug 修复

aosp 本身 bug,开启状态栏显示运营商时,会有 npe 问题

frameworks/base/packages/SystemUI/src/com/android/systemui/util/CarrierConfigTracker.java

@@ -213,6 +213,10 @@ public class CarrierConfigTracker
      * @param subId the subscription id for which to query the config
      */
     public boolean getShowOperatorNameInStatusBarConfig(int subId) {
+        //add for show OperatorName
+        if (true) {
+            return true;
+        }//end
         if (mShowOperatorNameConfigs.indexOfKey(subId) >= 0) {
             return mShowOperatorNameConfigs.get(subId);
         } else {

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/OperatorNameViewController.java

@@ -93,9 +93,11 @@ public class OperatorNameViewController extends ViewController<OperatorNameView>
     private SubInfo getDefaultSubInfo() {
         int defaultSubId = SubscriptionManager.getDefaultDataSubscriptionId();
         SubscriptionInfo sI = mKeyguardUpdateMonitor.getSubscriptionInfoForSubId(defaultSubId);
+        //fix when show operator sim cardout npe 
         return new SubInfo(
-                sI.getSubscriptionId(),
-                sI.getCarrierName(),
+                sI != null ? sI.getSubscriptionId() : 0,
+                sI != null ? sI.getDisplayName() : null,//中国电信
+                // sI.getCarrierName(),//CHN-CT — 中国电信
                 mKeyguardUpdateMonitor.getSimState(defaultSubId),
                 mKeyguardUpdateMonitor.getServiceState(defaultSubId));
     }

frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/fragment/CollapsedStatusBarFragment.java

@@ -614,8 +614,12 @@ public class CollapsedStatusBarFragment extends Fragment implements CommandQueue
         int subId = SubscriptionManager.getDefaultDataSubscriptionId();
         if (mCarrierConfigTracker.getShowOperatorNameInStatusBarConfig(subId)) {
             ViewStub stub = mStatusBar.findViewById(R.id.operator_name);
+            //add for fix aosp bug open operator show crash
+            View operatorFrameView = stub.inflate();
+            OperatorNameView operatorNameView = (OperatorNameView)operatorFrameView.findViewById(R.id.operator_name);
             mOperatorNameViewController =
-                    mOperatorNameViewControllerFactory.create((OperatorNameView) stub.inflate());
+                    mOperatorNameViewControllerFactory.create(operatorNameView);//end
+                    // mOperatorNameViewControllerFactory.create((OperatorNameView) stub.inflate());//aosp bug
             mOperatorNameViewController.init();
             // This view should not be visible on lock-screen
             if (mKeyguardStateController.isShowing()) {

你可能感兴趣的:(Android12-13,源码修改,bug,android13,SystemUI)