1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Mr.Alright---Android 11 mtk平台 桌面google日历名称不跟随系统语言变化

Mr.Alright---Android 11 mtk平台 桌面google日历名称不跟随系统语言变化

时间:2020-12-06 02:07:51

相关推荐

Mr.Alright---Android 11 mtk平台 桌面google日历名称不跟随系统语言变化

问题:桌面google日历名称不跟随系统语言变化

分析:

碰到google的apk,一般先确认是不是apk的问题然后看是不是平台的问题都不是的话再根据现象分析

1.先看第一步,launcher的所有其他apk都会变化,只有google日历不跟随系统语言变化,先把Google 日历的apk pull出来装到自己的手机上,

adb shell pm pathcom.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 /12/3 startif (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 /12/3 endif (info.contentDescription != null) {setContentDescription(info.isDisabled()? getContext().getString(R.string.disabled_app_label, info.contentDescription): info.contentDescription);}}

经验证,问题解决,并且比其他apk切换语言更快

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。