2015-06-24 3 views
7

में वरीयताओं को सेट करें, मैं अपनी कोड वरीयताओं में पढ़ना चाहता हूं जिसे मैंने प्रमाणीकरणकर्ता xml फ़ाइल के माध्यम से सेट किया है। मुझे Can't access preferences set in account-authenticator in Android और How can access preferences set in account-authenticator in Android एक पूरी तरह से अनुत्तरित नहीं मिला और दूसरा कहता है कि मुझे अपनी गतिविधि बनाने की आवश्यकता है। यह वास्तव में अजीब लगता है क्योंकि इसका मतलब यह होगा कि प्राथमिकताएं मैं xml के माध्यम से कॉन्फ़िगर कर सकते हैं बेकार हैं क्योंकि मैं उन्हें फिर से नहीं पढ़ सकता। वह नही हो सकता है। क्या कोई इसके बारे में और जानता है? अगर मुझे वास्तव में अपनी गतिविधि बनाना है, तो मैं प्रमाणीकरणकर्ता के मामले में यह कैसे करूँगा?एंड्रॉइड: प्रामाणिकता xml

उत्तर

0

प्रलेखन से AbstractAccountAuthenticator के लिए:

वरीयताओं एक PreferenceScreen एक्सएमएल पदानुक्रम कि PreferenceScreens कि को लागू किया जा सकता है प्रमाणक का प्रबंधन की एक सूची है करने के लिए अंक जोड़कर देखते हैं। एक उदाहरण है:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory android:title="@string/title_fmt"/> 
    <PreferenceScreen 
     android:key="key1" 
     android:title="@string/key1_action" 
     android:summary="@string/key1_summary"> 
     <intent 
      android:action="key1.ACTION" 
      android:targetPackage="key1.package" 
      android:targetClass="key1.class"/> 
    </PreferenceScreen> 
</PreferenceScreen> 

तो ऐसा लगता है तो मान सुलभ नहीं हैं कि भले ही यह account_preferences.xml में अलग-अलग वरीयताओं को डाल करने के लिए संभव है इसे किया जा करने का इरादा नहीं है।

this देखें और वरीयता स्क्रीन उद्देश्य को कैसे सेट अप और प्रबंधित करने के बारे में विवरण के लिए उत्तर दें।

संपादित

एक बहुत ही बुनियादी काम कर उदाहरण के लिए, आप के रूप में निम्नानुसार Sync Adapter Training Docs और संपादित से नमूना एप्लिकेशन को डाउनलोड कर सकते हैं।

res/xml/account_preferences.xml बनाएं ऐसा दिखता है जैसे इस

<?xml version="1.0" encoding="UTF-8" ?> 
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> 
    <PreferenceCategory android:title="Category"/> 
    <PreferenceScreen 
     android:key="key1" 
     android:title="@string/app_name" 
     android:summary="@string/account_name"> 
     <intent 
      android:targetPackage="com.example.android.network.sync.basicsyncadapter" 
      android:targetClass="com.example.android.network.sync.basicsyncadapter.EntryListActivity"/> 
    </PreferenceScreen> 
</PreferenceScreen> 

authenticator.xml में account-authenticator टैग करने के लिए android:accountPreferences="@xml/account_preferences" जोड़ें।

यह उदाहरण उदाहरण में एक मौजूदा गतिविधि शुरू करता है, लेकिन आसानी से वरीयता सक्रियता (या आप चाहते हैं कि कोई अन्य गतिविधि) शुरू कर सकते हैं। वरीयता सक्रियता को सेट अप करने के बारे में विवरण के लिए Settings मार्गदर्शिका देखें।

कोर एंड्रॉइड ऐप से वास्तविक दुनिया के उदाहरण के लिए, ईमेल ऐप here के कार्यान्वयन को देखें।

+0

यह किया जा सकता है लेकिन यह पहले से ही अजीब लगता है। एक और साबित करना है कि यदि आप विभिन्न खातों में देखते हैं, उदा। Google खाता, जीएमएक्स-मेल खाता, और अन्य - अगर Google खाता गिनती नहीं है तो बस। वे सभी इन सेटिंग्स का उपयोग करें। इरादा प्रमाणीकरण में काम नहीं करता है, यह आपके द्वारा दिए गए लिंक में सामान्य ऐप्स में काम करता है। एक प्रामाणिक में यह काम नहीं करता है। जैसे ही इरादा टैग होता है वरीयता दिखाई नहीं देती है। क्या आपने कभी एक सामान्य ऐप में प्रमाणीकरणकर्ता और _not_ में काम करने के लिए इसे प्राप्त किया था? – AndyAndroid

+0

मैंने अपना उत्तर अपडेट किया है कि आपको एंड्रॉइड नमूना ऐप्स में से एक को संपादित करने का तरीका दिखाया गया है ताकि यह खाता स्क्रीन से एक गतिविधि शुरू कर सके। मैंने कोर एंड्रॉइड ईमेल एप्लिकेशन के लिए एक लिंक भी शामिल किया है जो एक समान कार्यान्वयन दिखाता है। – mpkuth

+0

यदि कोई बेहतर उत्तर नहीं आ रहा है तो मैं आपको बक्षीस दूंगा, लेकिन आपका उत्तर 100% सही नहीं है। लेकिन यह मुझे इस मुद्दे के आसपास काम करने के लिए एक रास्ता तय करता है। शायद यह एक डिवाइस/एपीआई स्तर विशिष्ट समस्या है। मैं davdroid के कोड में अच्छी तरह से देखा। उस मुद्दे पर चलने वाले अन्य लोगों के लिए: 1. निर्यात करने की कोशिश करें = अपनी प्रीफ़ गतिविधि को सही करें, कुछ दावा करते हैं कि यह आवश्यक है, davdroid के लिए ऐसा प्रतीत नहीं होता है। 2. एक बग (?) है कि आप अपने इरादे में एक कार्रवाई कर रहे हैं। 3. मेरे लिए, फिर से davdroid काम करता प्रतीत होता है, मुझे इरादे लक्ष्य पैकेज और लक्ष्य क्लास, केवल कार्रवाई में हटाना पड़ा। – AndyAndroid

संबंधित मुद्दे