2012-11-26 40 views
0
Textview t1=(Textview) findViewById(R.id.tv); 
AccountManager acM=AccountManager.get(this); 
    Account[] accs=acM.getAccounts(); 
    for (Account account : accs) 
     { 
      t1.setText(t1.getText() + "\n\n\n" + "Name :" + account.name + "\n"+ "Type :" 
      + account.type + "\nPassword :" + acM.getPassword(account); 
     } 

我正在從測試應用程序訪問密碼。我不想訪問其他應用程序到我的帳戶密碼。示例我沒有訪問Facebook帳戶密碼或Twitter密碼?如何阻止從其他應用程序訪問我的帳戶密碼(帳戶和同步)?

+0

您可以編輯在做題http://developer.android.com/reference/android/accounts/AccountManager.html#getPassword(android.accounts.Account,所以你不必發佈一個新的我只想澄清。您是否爲自定義帳戶類型安裝了自己的帳戶提供商,或者您是否正在通過手機上的默認帳戶類型嘗試此操作? –

+0

對不起。我的賬戶類型爲com.app.mobile.account 示例代碼: 'Account account = new Account(user,「com.app.mobile.account」); \t \t \t AccountManager aManager = AccountManager.get(mContext); (aManager.addAccountExplicitly(account,pass,null)){ result = new Bundle(); result.putString(AccountManager.KEY_ACCOUNT_NAME,account.name); result.putString(AccountManager.KEY_ACCOUNT_TYPE,account.type); setAccountAuthenticatorResult(result); }' – Emre

回答

0

只有與帳戶提供者具有相同UID的應用才能訪問該密碼。這通常意味着在相同的應用程序和進程中運行(除非您使用sharedUid):

這種方法需要調用者持有許可 AUTHENTICATE_ACCOUNTS,並有相同的UID帳戶的 認證。

詳情請參見參考:)

+0

你能舉個例子嗎? – Emre

+0

一個什麼樣的例子?如果上面發佈的這兩個代碼段都在同一個應用中運行,您將可以訪問該密碼。如果你創建一個新的應用程序,並從它調用'getPassword()',你將會得到一個異常,並且將無法獲得密碼。 –

+0

非常感謝您的關注。 我正在嘗試另一個應用程序,並且無例外地使用'getPassword()'訪問密碼。 我想「setauthtoken」example.Would it be possible? (順便說一句,對不起,我可以說一點英語) – Emre

相關問題