Mr.Smile---Android 11 mtk平臺,桌面google日曆名稱不跟隨系統語言變化

問題:桌面google日曆名稱不跟隨系統語言變化

分析:

  1. 碰到google的apk,一般先確認是不是apk的問題
  2. 然後看是不是平臺的問題
  3. 都不是的話再根據現象分析

1.先看第一步,launcher的所有其他apk都會變化,只有google日曆不跟隨系統語言變化,先把Google 日曆的apk pull出來裝到自己的手機上,

adb shell pm path com.google.android.calendar 看下apk在那個路徑,然後adb pull出來裝到小米9,發現日曆應用工作正常,說明apk沒問題

2.然後我準備用drive only版本測試,是不是平臺問題,後面一想是的話,給平臺處理又要等他好久,於是就沒驗證

3. 既然不打算驗證平臺問題,那麼就自己分析吧。

  • 腦子裏大概有個思路,就是在launcher.java 的onConfigurationChanged裏面監聽語言變化處理,然後我發現語言變化並不會調用到launcher的這個方法;
  • 就想着通過收聽語言變化的廣播來處理,android.intent.action.LOCALE_CHANGED,但是在Launcher裏找了半天沒發現更新名稱的邏輯
  • 於是就想到了alps\packages\apps\Launcher3\src\com\android\launcher3\BubbleTextView.java,Launcher上的圖標都是這東西展示的,然後這個類裏搜索了下setText()的方法,發現只有一個地方調用,就是下面展示的地方,找到之後,我們只需要判斷是google 日曆的時候,獲取他的apk名字,然後再setText()就可以了
private void applyIconAndLabel(ItemInfoWithIcon info) {
        FastBitmapDrawable iconDrawable = newIcon(getContext(), info);
        mDotParams.color = IconPalette.getMutedColor(info.bitmap.color, 0.54f);

        setIcon(iconDrawable);
        setText(info.title);
        // Add by HZH on 2020/12/3 start
        if (info instanceof WorkspaceItemInfo) {
            ComponentName cn = new ComponentName("com.google.android.calendar","com.android.calendar.event.LaunchInfoActivity");
            if (cn.equals(((WorkspaceItemInfo) info).getTargetComponent())) {
                try {
                    PackageManager packageManager = getContext().getPackageManager();
                    ActivityInfo activityInfo = packageManager.getActivityInfo(cn, 0);
                    CharSequence googleCalender = activityInfo.loadLabel(packageManager);
                    setText(googleCalender);
                } catch (PackageManager.NameNotFoundException e) {
                    e.printStackTrace();
                }
            }
        }
        // Add by HZH on 2020/12/3 end
        if (info.contentDescription != null) {
            setContentDescription(info.isDisabled()
                    ? getContext().getString(R.string.disabled_app_label, info.contentDescription)
                    : info.contentDescription);
        }
    }

 經驗證,問題解決,並且比其他apk切換語言更快

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章