Dav*_*ers 5 android kotlin android-permissions
从文档我试图让Google Account我的Nexus电话:
val am: AccountManager = AccountManager.get(this)
val myAccounts: Array<Account> = am.getAccountsByType("com.google")
Run Code Online (Sandbox Code Playgroud)
即使我肯定有一个帐户,并且可以看到引用它的日志,例如I/TrustAgent: [HomeAddressChangeTracker] fetch for account myaddress@gmail.comAND我已经添加了权限并验证了它们被授予,但数组始终为空.
我有minSdkVersion 21和targetSdkVersion 27
有任何想法吗?
根据8.0 中的更改,仅凭权限无法访问帐户GET_ACCOUNTS。您还需要要求用户选择一个帐户,AccountManager.newChooseAccountIntent如下所示:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
if(checkSelfPermission(Manifest.permission.GET_ACCOUNTS) == PackageManager.PERMISSION_GRANTED) {
val intent = AccountManager.newChooseAccountIntent(null, null, arrayOf("com.google"), null, null, null, null)
startActivityForResult(intent, 42)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent) {
if (requestCode == 42)
val accountManager = AccountManager.get(this)
val accounts = accountManager.getAccountsByType("com.google")
accounts.forEach {
Log.v(localClassName, it.toString())
}
}
}
Run Code Online (Sandbox Code Playgroud)
正如文档中所述AccountManager.newChooseAccountIntent:
所选帐户对调用者标记为 VISIBILITY_USER_MANAGED_VISIBLE(请参阅 setAccountVisibility(Account, String, int)),并将在后续的 getAccountsByType(String))调用中返回给该帐户。
因此您只需选择该帐户一次,然后系统应该记住此选择以供后续调用AccountManager.getAccountsByType。
| 归档时间: |
|
| 查看次数: |
548 次 |
| 最近记录: |