我试图通过adb shell调用com.android.settings / .LocalePicker以包含在Tasker应用程序中。
当我做
am start -n com.android.settings/.LocalePicker
我只看到当前的系统语言区域设置,没有其他任何设备选项。
相反,如果我继续浏览隐藏的“开发设置”菜单,该菜单中包含“区域设置”选项,那么我将获得语言/区域设置的完整交互式屏幕,您可以从中进行选择。
我应该指出,这是在Android 2.1系统上,因此更多的现代选项不可用。这是从隐藏的“开发设置”菜单中选择“区域设置”的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应用程序并查看了Manalest以及Locale的smali文件,但我对Java的理解非常有限。
还有什么我应该看的吗?
哦,Tasker Misc>设置对话框>区域设置也只是调出当前设置的区域设置,而不是交互式列表。
我最终在反编译的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