android13(T) SystemUIのオペレーター表示バグ修正

aosp自体にバグがあり、ステータスバーをオンにしてオペレータを表示するとnpeの問題が発生します。

フレームワーク/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()) {
    
    

おすすめ

転載: blog.csdn.net/u012932409/article/details/133066043