android-intent - 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 也只是显示当前设置的区域设置,而不是交互式列表。
解决方案
我最终在反编译的 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
推荐阅读
- sql - 使用带有自外键的递归
- javascript - 如何在电子应用程序中获取持久权限?
- c++ - 在#include 预处理器命令中使用 qmake 变量
- google-cloud-sql - 如何连接和访问 gcloud mysql?
- java - 用于调用跟踪检测的 Java ASM 库
- java - java中的对象锁定具有一些属性值
- elasticsearch - Kibana - 分组并获取每个组的最新记录
- java - 用 application.properties 覆盖默认的 Spring-Boot application.properties
- testing - 如何在 JMeter 中仅使用包含 20 个用户的 CSV 文件中的前 5 个用户?
- tensorflow - 找到我需要为 lstm 构建自定义 tflite 的标头