【问题标题】:Change device language on Android 6.0 (Android M)在 Android 6.0 (Android M) 上更改设备语言
【发布时间】:2015-11-17 10:59:24
【问题描述】:

有一些应用程序可以通过 ADB 命令更改 Android 设备语言(区域设置)。这需要先授予应用的 CHANGE_CONFIGURATION 权限,然后才能更改语言。

但是,在 Android 6.0(API 级别 23,Nexus 6 设备)上,不再允许授予所需的权限,因为命令 adb shell pm grant net.sanapeli.adbchangelanguage android.permission.CHANGE_CONFIGURATION(以 ADB Change Language app 中的包名称为例)产生

不允许操作:java.lang.SecurityException:权限 android.permission.CHANGE_CONFIGURATION 不是可更改的权限类型

如何在 Android 操作系统版本 6.0 上更改语言/区域设置无需 root 设备?这可以通过辅助应用程序、直接 ADB 命令或通过启动一些意图 vai ADB 来完成吗?

2010 年的相关问题:Change language programmatically in Android

【问题讨论】:

    标签: android localization internationalization adb


    【解决方案1】:

    Android OS 6.0 (Marshmallow) 版本的公共镜像中不再存在 SecurityException。这在 Nexus 6 和 Nexus 9 设备上得到了证实。结案。

    【讨论】:

      【解决方案2】:

      我可以通过将我的应用程序放在 /system/priv-app 中来完成这项工作,因此它成为了一个特权系统应用程序。作为根:

      mount -o remount,rw /system
      mkdir /system/priv-app/MyApp
      cp /sdcard/myapp.apk /system/priv-app/MyApp/MyApp.apk
      chcon "u:object_r:system_file:s0" /system/priv-app/MyApp
      chcon "u:object_r:system_file:s0" /system/priv-app/MyApp/MyApp.apk
      mount -o remount,ro /system
      

      Chcon 设置正确的 SELinux 安全上下文。

      【讨论】:

      • 该应用程序的目的是提供在库存生产(即无根)设备上控制区域设置的能力。在有根设备上为什么要打扰该应用程序?
      • 谢谢,但如果我必须 root 我的设备,我真的不能使用这个解决方案。我编辑了我的问题,询问如何在不生根的情况下做到这一点。
      猜你喜欢
      • 1970-01-01
      • 2014-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-31
      • 1970-01-01
      • 2015-06-19
      • 2015-07-15
      相关资源
      最近更新 更多