2012-04-24 20 views
6

मैं एंड्रॉइड AccountManager के साथ प्रयोग कर रहा हूं।सुरक्षा अपवाद खाता खोलने का प्रयास करते समय

मेरे पास खाता प्रमाणीकरण सेवा है जो उपयोगकर्ता नाम/पासवर्ड दर्ज करने के लिए यूआई दिखाती है।

मैं सेटिंग्स/खाते/खाता जोड़ें, अपना नया खाता प्रकार चुनें और मुझे यूआई के साथ प्रस्तुत किया गया है।

जब मैं ठीक क्लिक करें मैं निम्नलिखित त्रुटि मिलती है

04-24 14:48:29.334: E/AndroidRuntime(386): java.lang.SecurityException: 
    caller uid 10035 is different than the authenticator's uid 

MyAccountAuthenticationService का एकमात्र तरीका:

@Override 
public IBinder onBind(Intent intent) { 
    return new MyAccountAuthenticator(this).getIBinder(); 
} 

MyAccountAuthenticator:

@Override 
public Bundle addAccount(AccountAuthenticatorResponse response, 
    String accountType, String authTokenType, String[] requiredFeatures, 
    Bundle options) throws NetworkErrorException { 

    final Intent intent = new Intent(context, MyAccountCreatorActivity.class); 
    intent.putExtra(AccountManager.KEY_ACCOUNT_AUTHENTICATOR_RESPONSE, response); 
    final Bundle bundle = new Bundle(); 
    bundle.putParcelable(AccountManager.KEY_INTENT, intent); 
    return bundle; 
} 

MyAccountCreatorActivity के का टुकड़ा onClick

+०१२३५१६४१०६१
AccountManager accManager = AccountManager.get(this); 
Account newAccount = new Account(email, MyAccountAuthenticator.ACCOUNT_TYPE); 
accManager.setPassword(newAccount, password); 

अपवाद setPassword पर फेंक दिया गया है। मुझे पहले से ही सभी लेखांकन अनुमतियों की आवश्यकता है। मुझे यकीन नहीं है कि इसका कारण क्या हो सकता है। अगर आपको अधिक कोड/जानकारी चाहिए तो कृपया पूछें।

धन्यवाद।

+2

यह http://loganandandy.tumblr.com/post/613041897/caller-uid-is- भिन्न हो सकता है उपयोगी –

+0

संभावित सुरक्षा डुप्लिकेट [सुरक्षा अपवाद: कॉलर यूआईडी XXXX प्रमाणीकरणकर्ता के यूआईडी से अलग है] (http: // stackoverflow.com/questions/3774282/securityexception-caller-uid-xxxx-is- अलग-than-the-authenticators-uid) – rds

+0

@rds क्षमा करें यह एक डुप्ली नहीं है। मूल एक्सएमएल में एक टाइपो था, हालांकि एंड्रॉइड आपको –

उत्तर

4

धन्यवाद खान @imran करने के लिए, मुझे पता चला कि मेरी निरंतर मूल्य से मेल नहीं खाती "वास्तव में" क्या प्रमाणक XML परिभाषा

+0

की वास्तविक वास्तविक प्रकृति की व्याख्या नहीं करेगा, मुझे समझ में नहीं आता कि आपकी "प्रामाणिक एक्सएमएल परिभाषा" AndroidManifest के उत्तर से अलग कैसे है। क्या आपको अपने एंड्रॉइडमैनिफेस्ट से मेल खाना पड़ेगा या जवाब कहीं और था? – Danny

+0

अगर मैं org.zighinetto.myapp.account को org.zighinetto.myap.account के रूप में गलत टाइप करता हूं तो यह काम नहीं करेगा। इसे एक्सएमएल में एक तरह से परिभाषित किया गया था और कोड में एक और तरीका (सार्वजनिक स्थैतिक अंतिम स्ट्रिंग ... आप जानते हैं ...) –

+0

समझ में आता है। धन्यवाद! – Danny

17

स्पष्ट लगता में था, लेकिन अगर आपके प्रमाणक सेवा नहीं है तो आप भी इस त्रुटि देखेंगे AndroidManifest.xml में परिभाषित किया गया है। उदाहरण के लिए:

<service android:name="your.AuthService"> 
    <intent-filter> 
     <action android:name="android.accounts.AccountAuthenticator" /> 
    </intent-filter> 
    <meta-data android:name="android.accounts.AccountAuthenticator" 
     android:resource="@xml/authenticator" /> 
</service> 
+0

उत्तर के लिए धन्यवाद। सवाल यह नहीं बताता कि मैंने पहले ही एक्सएमएल लिखा है, उस मामले में सिंटैक्स गड़बड़ी –

1

मेरे मामले में मैं गलती से <application> टैग बाहर प्रकट में AuthenticatorService परिभाषित किया। <application> के अंदर घोषणा को स्थानांतरित करने से समस्या ठीक हुई। आशा किसी की मदद करेगी।

3

मेरे मामले में, मुझे यह त्रुटि मिली जब मैंने उसी डिवाइस पर दो अलग-अलग स्वाद चलाए। दूसरा एक ही खाते को पहले के रूप में एक्सेस करने का प्रयास कर रहा था, जिससे त्रुटि हुई।

+0

के साथ मुझे एंड्रॉइड 5 फोन पर एक ही समस्या थी, जिसे मैंने स्वाद आयाम नाम बदलकर तय किया था, आपके उत्तर के लिए धन्यवाद :) – matdev

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

  • कोई संबंधित समस्या नहीं^_^