2012-11-18 7 views
5

मैं एक अजीब समस्या में आया, मुझे एक एप्लिकेशन मिला है जो एंड्रॉइड डिवाइस (Font Size Setter) पर फ़ॉन्ट आकार को स्वतंत्र रूप से बदलने की इजाजत देता है। यह कुछ आंतरिक एंड्रॉइड एपीआई को कॉल करने के लिए आत्मनिरीक्षण का उपयोग करता है। इस कॉल को करने के लिए, इसे निम्नलिखित अनुमति की आवश्यकता है: android.permission.CHANGE_CONFIGURATION। यह एंड्रॉइड 4.0 के तहत एक आकर्षण की तरह काम करता है और 4.2 तक जहां यह अब काम नहीं करता है। लॉग में खोदने से मुझे पता चला कि मैं फ़ॉन्ट आकार अपडेट नहीं कर सकता क्योंकि यह इस अनुमति को याद करता है। प्रभावी अनुमतियों की जाँच करने के Debbuging, मैं इन जब PackageInfo मेरी ऐप्लिकेशन से संगत निरीक्षण मिलाएंड्रॉइड 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। मैंने एंड्रॉइड जोड़ा: maxSdkVersion = "16" मेरे मैनिफेस्ट में नए एंड्रॉइड संस्करणों को फ़िल्टर करने के लिए! – thiagolr

उत्तर

1

कम से कम वर्तमान में, CHANGE_CONFIGURATION अपने अनुप्रयोग या तो के लिए की आवश्यकता है पर हस्ताक्षर कुंजी या एक प्रणाली विभाजन पर स्थापित किया जा फर्मवेयर द्वारा हस्ताक्षर किए जाने। आप इसे the framework manifest की जांच करके देख सकते हैं, जहां इन अनुमतियों को परिभाषित किया गया है।

+0

धन्यवाद, तो मुझे लगता है कि यह है मेरे आवेदन के मृत अगर मैं ऐसा नहीं कर सकता। क्या कोई ज्ञात कामकाज है? –

+0

@CedricGatay: ठीक है , आप "कुछ आंतरिक एंड्रॉइड एपिस कॉल करने के लिए आत्मनिरीक्षण" का उपयोग कर रहे हैं - उम्मीद है कि रिलीज में काम करने के लिए बहुत समझदार नहीं है। ऐसा कहा जा रहा है, मुझे नहीं पता कि आप विशेष रूप से 'CHANGE_CONFIGURATION' का उपयोग कर रहे थे। – CommonsWare

+0

मूल रूप से मैं फ़ॉन्ट आकार एंड्रॉइड का उपयोग करने के लिए 'IActivityManager # UpdatePersistentConfiguration' का उपयोग करना चाहिए। मुझे ऐसा करने के अन्य तरीके नहीं मिला। हालांकि मैं एक सार्वजनिक एपीआई का उपयोग करना पसंद करेंगे। –

4

CHANGE_CONFIGURATION अनुमति के संरक्षण बदल दिया गया है करने के लिए "प्रणाली | हस्ताक्षर | विकास" (v 4.2 के पश्चात्) से "खतरनाक" (v4.1 और नीचे) एंड्रॉयड v 4.2 के पश्चात् के बाद से

ऐसा नहीं है कि तरह लग रहा है एंड्रॉइड 4.2+ उपकरणों पर CHANGE_CONFIGURATION अनुमति प्राप्त करने के लिए तीसरे भाग ऐप्स के लिए कोई रास्ता नहीं है। :-(

3

इस पोस्ट http://blog.sightidea.com/?p=44

आप adb उपकरण के साथ एप्लिकेशन को अनुमति देनी अपने उपयोगकर्ता पूछ सकते हैं चेक:

>adb shell 
>pm grant com.yourapp.packagename android.permission.CHANGE_CONFIGURATION 
संबंधित मुद्दे