0

這是我的理解,Accountmanager.get(context).getAccounts無法返回安全漏洞,因爲它不需要權限。從文檔:這種方法還沒有被授予GET_ACCOUNTS 許可爲什麼Accountmanager.get(context).getAccounts()返回securityexception?

客戶,只會看到 AbstractAccountAuthenticators其簽名的客戶相匹配管理這些賬戶。

https://developer.android.com/reference/android/accounts/AccountManager.html#getAccounts()

所以它的內容但如果你沒有得到GET_ACCOUNTS那麼這很好,但調用除了具有以下不同的方法時,我的應用程序崩潰:

來電者的uid#缺少任何android.permission.GET_ACCOUNTS

爲什麼會發生這種情況?

Account[] accounts = AccountManager.get(parentActivity).getAccounts(); 

回答

4

您的應用程序缺少清單中的匹配權限。 添加

<uses-permission 
    android:name="android.permission.GET_ACCOUNTS" /> 

到AndroidManifest.xml

編輯:針對Android 6.0,要求它在運行時:http://developer.android.com/training/permissions/requesting.html

GET帳戶: 允許訪問帳戶的帳戶列表服務。 保護級別:危險

+1

我從應用程序的此版本的清單中刪除GET_ACCOUNTS,因爲它不應該被使用了。 AccountManager是否要求它作爲清單的強制添加項?值得指出的是,我無法在自己的手機上重現此問題 - 儘管沒有在清單中使用GET_ACCOUNTS,但一切正常。我只有一個用戶像這樣一直崩潰。 – Jon

+0

http://developer.android.com/reference/android/Manifest.permission.html#GET_ACCOUNTS - 這是一個危險的權限,需要請求。 –

+0

問題是,只是向清單中添加權限是否足夠,或者我是否必須在android M下實際請求它。accountmanager的文檔讓我覺得我不需要 – Jon

相關問題