2012-11-18 18 views
5

我遇到了一個奇怪的問題,我有一個應用程序允許自由更改Android設備上的字體大小(Font Size Setter)。它使用內省來調用一些內部的Android API。要進行此調用,它需要以下權限:android.permission.CHANGE_CONFIGURATION。它在Android 4.0和最高4.2下的魅力下工作,它不再工作。 挖掘日誌我發現我無法更新字體大小,因爲它錯過了此權限。 Debbuging檢查有效權限,我檢查PackageInfo相當於我的應用程序時,得到了這些Android 4.2過濾出CHANGE_CONFIGURATION權限?

requestedPermissions = {java.lang.String[2]@830038778728} 
    [0] = {[email protected]}"android.permission.CHANGE_CONFIGURATION" 
    [1] = {[email protected]}"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> 
+0

你能後的清單文件 – PearsonArtPhoto

+0

我上有同樣的問題https://play.google.com/store/apps/details?id=com.wiirecords.localizedapps。我在我的清單中添加了android:maxSdkVersion =「16」來過濾更新的Android版本 – thiagolr

回答

1

至少在目前,CHANGE_CONFIGURATION需要您的應用程序要麼通過固件簽署簽名密鑰或對系統分區進行安裝。您可以通過檢查the framework manifest來了解這些信息,其中定義了這些權限。

+0

謝謝,所以我想它是我的應用程序死了,如果我不能這樣做。是否有任何已知的解決方法? –

+0

@CedricGatay:好,你正在使用「內省來調用一些內部的Android API」 - 期望在發佈版本上工作並不是非常明智。話雖如此,我不知道你是什麼具體使用'CHANGE_CONFIGURATION'。 – CommonsWare

+0

基本上我使用'IActivityManager#updatePersistentConfiguration'來更新Android應該使用的字體大小。我沒有找到其他方法來做到這一點。我寧願使用公共API。 –

4

CHANGE_CONFIGURATION許可的保護水平已改爲由「危險」(V4.1及以下)由於Android V4.2「系統| |簽名的開發」(V4.2)

它看起來像沒有辦法讓第三方應用獲得Android 4.2+設備上的CHANGE_CONFIGURATION權限。 :-(

3

檢查這個帖子http://blog.sightidea.com/?p=44

你可以問問你的用戶授予權限的應用程序與adb工具:

>adb shell 
>pm grant com.yourapp.packagename android.permission.CHANGE_CONFIGURATION