2012-11-18 10 views
5

Ich stoße auf ein seltsames Problem, ich habe eine Anwendung, die erlaubt, die Schriftgröße auf Android-Gerät (Font Size Setter) frei zu ändern. Es verwendet Introspektion, um einige interne Android Apis zu rufen. Um diesen Aufruf auszuführen, benötigt es die folgende Berechtigung: android.permission.CHANGE_CONFIGURATION. Es funktionierte wie ein Charme unter Android 4.0 und bis zu 4.2, wo es nicht mehr funktioniert. In Logs habe ich herausgefunden, dass ich die Schriftgröße nicht aktualisieren kann, weil es diese Erlaubnis verfehlt. Debbuging effektiven Berechtigungen zu überprüfen, ich habe diese, wenn die Inspektion Package meiner App entsprechendenAndroid 4.2 filtert die CHANGE_CONFIGURATION-Berechtigung aus?

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 

Hat jemand bekam eine Ahnung, was los ist, oder irgendeine Abhilfe Idee? Vielen Dank für das Lesen von mir.

pro Anfrage, Datei die 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

Können Sie die Manifest-Datei schreiben – PearsonArtPhoto

+0

ich hatte das gleiche Problem auf https://play.google.com/store/apps/details?id=com.wirecords.localizedapps Ich habe Android: MaxSdkVersion = "16" zu meinem Manifest hinzugefügt, um neuere Android-Versionen zu filtern! – thiagolr

Antwort

1

Mindestens derzeit CHANGE_CONFIGURATION für Ihre Anwendung erfordert entweder von der Firmware unterzeichnet werden Unterzeichnung Schlüssel oder auf einer Systempartition installiert werden. Sie können dies sehen, indem Sie the framework manifest untersuchen, wo diese Berechtigungen definiert sind.

+0

Danke, also denke ich, dass es ist die Toten meiner Anwendung, wenn ich das nicht tun kann Gibt es eine bekannte Abhilfe? –

+0

@ CedricGatay: Nun , Sie verwenden "Introspektion, um einige interne Android Apis zu nennen" - in der Erwartung, dass über Releases arbeiten nicht sehr sinnvoll ist. Davon abgesehen habe ich keine Ahnung, wofür du 'CHANGE_CONFIGURATION' speziell benutzt hast. – CommonsWare

+0

Im Grunde verwende ich 'IActivityManager # updatePersistentConfiguration', um die Schriftgröße zu aktualisieren, die Android verwenden sollte. Ich habe keine anderen Wege gefunden, dies zu tun. Ich würde jedoch lieber eine öffentliche API verwenden. –

4

Das Schutzniveau der CHANGE_CONFIGURATION Erlaubnis wurde geändert „System | Signatur | Entwicklung“ (v4.2) von „gefährlichen“ (v4.1 und unten), da Android v4.2

Es sieht so aus Keine Möglichkeit für Apps von Drittanbietern, die Berechtigung CHANGE_CONFIGURATION auf Android-Geräten ab Version 4.2 zu erhalten. :-(

3

prüft Diesen Beitrag http://blog.sightidea.com/?p=44

Sie Ihre Benutzerberechtigung für die App mit adb Werkzeug zu gewähren fragen:

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