Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 安卓4.2过滤掉更改配置权限?_Android - Fatal编程技术网

Android 安卓4.2过滤掉更改配置权限?

Android 安卓4.2过滤掉更改配置权限?,android,Android,我遇到了一个奇怪的问题,我得到了一个允许在Android设备()上自由更改字体大小的应用程序。它使用内省来调用一些内部Android API。要执行此调用,它需要以下权限:android.permission.CHANGE\u CONFIGURATION。它在安卓4.0和4.2下都像一个魔咒一样工作,在4.2下不再工作了。 翻开日志,我发现我无法更新字体大小,因为它错过了这个权限。为了检查有效权限,我在检查与我的应用程序对应的PackageInfo时获得了这些权限 requestedPermis

我遇到了一个奇怪的问题,我得到了一个允许在Android设备()上自由更改字体大小的应用程序。它使用内省来调用一些内部Android API。要执行此调用,它需要以下权限:
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中使用。