Android 安卓4.2过滤掉更改配置权限?
我遇到了一个奇怪的问题,我得到了一个允许在Android设备()上自由更改字体大小的应用程序。它使用内省来调用一些内部Android API。要执行此调用,它需要以下权限:Android 安卓4.2过滤掉更改配置权限?,android,Android,我遇到了一个奇怪的问题,我得到了一个允许在Android设备()上自由更改字体大小的应用程序。它使用内省来调用一些内部Android API。要执行此调用,它需要以下权限:android.permission.CHANGE\u CONFIGURATION。它在安卓4.0和4.2下都像一个魔咒一样工作,在4.2下不再工作了。 翻开日志,我发现我无法更新字体大小,因为它错过了这个权限。为了检查有效权限,我在检查与我的应用程序对应的PackageInfo时获得了这些权限 requestedPermis
android.permission.CHANGE\u CONFIGURATION
。它在安卓4.0和4.2下都像一个魔咒一样工作,在4.2下不再工作了。
翻开日志,我发现我无法更新字体大小,因为它错过了这个权限。为了检查有效权限,我在检查与我的应用程序对应的PackageInfo时获得了这些权限
requestedPermissions = {java.lang.String[2]@830038778728}
[0] = {java.lang.String@830038778760}"android.permission.CHANGE_CONFIGURATION"
[1] = {java.lang.String@830038778896}"android.permission.WRITE_SETTINGS"
requestedPermissionsFlags = {int[2]@830038779016}
[0] = 1
[1] = 3
有人知道发生了什么事,或者有什么解决办法吗?
非常感谢你读我的书
根据请求,AndroidManifest.xml文件
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.gatay.android.fss"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="14"/>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<application android:label="@string/app_name" android:icon="@drawable/app_icon">
<activity android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
至少目前,更改配置
要求您的应用程序通过固件签名密钥签名或安装在系统分区上。您可以通过检查这些权限的定义位置来了解这一点。自Android v4.2以来,更改配置权限的保护级别已从“危险”(v4.1及以下)更改为“系统|签名|开发”(v4.2)
看起来第三方应用程序无法在Android 4.2+设备上获得更改配置权限:-(查看此帖子
您可以使用adb
工具要求用户授予应用程序权限:
>adb shell
>pm grant com.yourapp.packagename android.permission.CHANGE_CONFIGURATION
你能发布清单文件吗?我在上也有同样的问题。我在清单中添加了android:maxSdkVersion=“16”以过滤较新的android版本!谢谢,所以如果我不能这样做,我想我的应用程序就死定了。有什么已知的解决方法吗?@CedricGatay:嗯,你在使用“内省来调用一些内部android API”--期望跨版本工作是不明智的。尽管如此,我不知道您使用
CHANGE\u CONFIGURATION
的具体目的是什么。基本上,我使用IActivityManager#updatePersistentConfiguration
来更新Android应该使用的字体大小。我没有找到其他方法。我更喜欢使用公共字体API。如何获取固件签名密钥?My org依赖于这一内部工具,该工具为测试本地化设置了虚假的区域设置,这对Jellybean QA造成了影响。@Cheezmeister:“如何获取固件签名密钥?”--您必须构建自己的固件。例如,CyanogenMod有一些签名密钥可在其ROM mod中使用。