2011-08-15 32 views
12

我想使用android AccountManger來同步我的web服務和應用程序(標準同步聯繫人和calander),但AccountManager只顯示存儲用戶名和密碼。我的Web服務需要三個憑據:用戶名,密碼和帳戶。存儲第三條信息的最佳做法是什麼?在Android帳戶管理器中存儲其他數據

+0

對不起一個愚蠢的,但你可以不合並用戶名和帳戶,並保持它的邏輯'用戶名'? – 2011-08-15 09:11:32

回答

25

由於p ablisco解釋,你可以使用的AccountManager的通過addAccountExplicitly()的用戶數據包參數存儲任意用戶數據的能力:

final Bundle extraData = new Bundle(); 
    extraData.putString("someKey", "stringData"); 
    boolean accountCreated = am.addAccountExplicitly(account, password, extraData); 

後來,例如在你的鑑定者的getAuthToken()方法,可以檢索有關您的帳戶數據有工作:

String myData = am.getUserData(account, "someKey"); 

不幸的是在寫這篇文章的你只能檢索字符串,所以你的數據應該存儲,當您第一次建立綁定字符串。希望這可以幫助某人。

+0

我正在尋找使用我的應用程序的客戶經理,我需要存儲諸如電子郵件和userIds的東西。使用上述方法安全嗎?或者任何應用程序可以讀取ID和電子郵件? –

+0

@TomHart - 關於getUserData()的文檔(其他應用程序讀取帳戶數據的方式)聲明:「此方法要求調用方持有權限AUTHENTICATE_ACCOUNTS並具有與帳戶的身份驗證器相同的UID」。這意味着如果設置正確,只有您的應用程序才能訪問該數據。但是,AccountManager不是保存敏感數據的安全區域。對設備的物理訪問允許任何人讀取該數據。 請參閱:http://developer.android.com/reference/android/accounts/AccountManager.html#getUserData(android.accounts.Account,java.lang.String) –

+1

我做了一些測試,我看到我可以閱讀其他賬戶數據,我只是需要的關鍵。你有關於如何安全存儲用戶ID和電子郵件的建議嗎?我所能想到的就是對setUserData使用一個非常晦澀的鍵,比如'.setUserData(「Some ^^!_Really_StrangeEMa1L_Key!」,userEmail);'但是如果有人反編譯應用程序,他們可能會得到我使用的字符串。 –

2

從Android的文檔,它應該有任何的用戶數據包來完成時,添加的帳戶:

AccountManager manager = AccountManager.get(context); 
manager.addAccountExplicitly(account, null, userData); 

或添加明確的價值觀:

manager.setUserData(account, KEY, value); 

但我遇到的麻煩這個:

AccountManager IllegalArgumentException: key is null

+0

感謝您的回覆。我最終放棄了客戶經理。最終我遇到了很多麻煩。話雖如此,看起來我的項目正在增長,我很可能會回到它。我會很快檢查你的答案 – JonWells

相關問題