2012-03-23 13 views
7

मैं उस एप्लिकेशन पर काम कर रहा हूं जिसमें एक सिंक एडाप्टर और प्रमाणीकरणकर्ता है जो एंड्रॉइड खाता प्रबंधक के माध्यम से खाते जोड़ने के लिए उपयोग किया जाता है। मुझे निम्नलिखित दो समस्याएं मिली हैं:क्या खाता और सिंक 'खाता निकालें' कार्यक्षमता को ओवरराइड करना संभव है

1) खाता & सिंक में 'खाता जोड़ें' बटन की कार्यक्षमता को ओवरराइड करना संभव था, लेकिन मुझे 'खाता निकालें' बटन की कार्यक्षमता को ओवरराइड करने का कोई तरीका नहीं मिल रहा है - क्या यह संभव है?

2) मैंने पढ़ा है कि प्रमाणीकरणकर्ता अपने खातों को हटाने से रोक सकते हैं लेकिन मुझे नहीं पता कि कैसे ... क्या कोई जानता है कि मैं इसे अपने प्रामाणिक में कैसे जोड़ सकता हूं? इस तरह से मैं AbstractAccoutnAuthenticator.getAccountRemoval का उपयोग करने में सक्षम हो सकता हूं जो कार्यक्षमता को प्राप्त करने के लिए अनुमति दी गई है। मान लिया जाये कि अपने पैकेज का नाम com.companyname

एक प्रमाणक वर्ग है कि पैकेज com.companyname.auth में AbstractAccountAuthenticator फैली बनाएं है

और इस पद्धति को लागू:

धन्यवाद

उत्तर

7

अपने दूसरे प्रश्न का उत्तर देने इस पर:

@Override 
public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) { 
    Bundle result = new Bundle(); 
    boolean allowed = false; // or whatever logic you want here 
    result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, allowed); 
    return result; 
} 

प्रकट करने के लिए इस जोड़ें:

<service android:name=".auth.AuthenticationService"> 
     <intent-filter> 
      <action android:name="android.accounts.AccountAuthenticator"></action> 
     </intent-filter> 
     <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator"></meta-data> 
    </service> 

(ध्यान दें कि लिंट एक चेतावनी देता है कि इस निर्यात की गई सेवा को अनुमतियों की आवश्यकता नहीं है)।

और फिर में रेस/xml authenticator.xml फ़ाइल जोड़ें:

<?xml version="1.0" encoding="utf-8"?> 
<account-authenticator 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:accountType="com.companyname" 
android:icon="@drawable/app_icon" 
android:smallIcon="@drawable/app_icon_small" 
android:label="@string/app_name" /> 

यह मानते हुए कि अपना खाता प्रकार "com.companyname" है। हम यही करते हैं और ऐसा लगता है कि यह एपीआई 8 से काम कर रहा है।

1

पिछला उपयोगकर्ता सही है। हालांकि संवाद को कस्टमाइज़ करने का कोई तरीका नहीं है (दस्तावेज़ीकरण झूठ बोलता है और कहता है कि आप एक कस्टम स्क्रीन के लिए एक इरादा वापस कर सकते हैं, जिसे स्पष्ट रूप से कोड में लागू नहीं किया गया है)।

लौटने पर झूठी वापसी की सिफारिश नहीं की जाती है। चूंकि यह एक संवाद देता है जो उपयोगकर्ता को बहुत डरावना कहता है (लाइनों के साथ कुछ जो आपको फ़ैक्टरी रीसेट करने की आवश्यकता है)

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