首页 > 解决方案 > LocalePicker 意图中的附加功能

问题描述

我正在尝试通过 adb shell 调用 com.android.settings/.LocalePicker 以包含在 Tasker 应用程序中。

当我做

am start -n com.android.settings/.LocalePicker

我只看到当前系统语言区域设置,没有看到其他设备选项。

相反,如果我继续通过隐藏的开发设置菜单(其中包含区域设置)作为选项,那么我将获得语言/区域设置的完整交互式屏幕,从中进行选择。

我应该指出,这是在 Android 2.1 系统上,所以许多更现代的选项不可用。这是从隐藏的 Development Settings 菜单中选择 Locale 的 logcat 的一部分:

I/ActivityManager( 1111): Starting activity: Intent {     
act=android.intent.action.MAIN cmp=com.android.settings/.LocalePicker   
(has extras) }
D/ResourceType( 1162): calling getConfigurations
D/ResourceType( 1162): called getConfigurations size=68
D/asset   ( 1162): locale  0: ''
D/asset   ( 1162): locale  1: 'de'
D/asset   ( 1162): locale  2: 'fr'
D/asset   ( 1162): locale  3: 'es'
D/asset   ( 1162): locale  4: 'it'
D/asset   ( 1162): locale  5: 'en_GB'
D/asset   ( 1162): locale  6: 'en_US'
D/asset   ( 1162): locale  7: 'zh_TW'
D/asset   ( 1162): locale  8: 'fr_CA'
D/asset   ( 1162): locale  9: 'de_DE'
D/asset   ( 1162): locale 10: 'fr_FR'
D/asset   ( 1162): locale 11: 'es_ES'
D/asset   ( 1162): locale 12: 'it_IT'
D/asset   ( 1162): locale 13: 'en'
D/asset   ( 1162): locale 14: 'zh'

“有附加功能”并没有像我希望的那样具有启发性。我以有限的理解对此进行了研究,并认识到在访问菜单选项时会发送一些额外的信息,而不是仅通过 ADB 发送意图。但我不知道这些信息会采用什么形式或格式。我已经反编译了 Settings 应用程序并查看了 Manifest 以及 Locale 的 smali 文件,但我对 Java 的理解非常有限。

还有什么我应该看的吗?

哦,Tasker Misc>Settings Dialog>Locale Settings 也只是显示当前设置的区域设置,而不是交互式列表。

标签: android-intentlocale

解决方案


我最终在反编译的 Settings.apk 的 res\xml\settings_development.xml 中找到了所需的附加功能:

<extra android:name="hideDevLanguages" android:value="false" />

因此 adb shell 中的工作命令行是:

am start -n com.android.settings/.LocalePicker --ez hideDevLanguages false

推荐阅读