Android M-GoogleAccountCredential setSelectedAccount不';t工作-名称不能为空
在Android M-Preview上,GoogleAccountCredential.setSelectedAccount似乎不起作用 调试时,我注意到调用该方法后,对象的Android M-GoogleAccountCredential setSelectedAccount不';t工作-名称不能为空,android,google-play-services,android-6.0-marshmallow,Android,Google Play Services,Android 6.0 Marshmallow,在Android M-Preview上,GoogleAccountCredential.setSelectedAccount似乎不起作用 调试时,我注意到调用该方法后,对象的selectedAccount和accountName字段仍然为空 在调试过程中,您可以看到我的变量accountName不是空的或null,我调用.setSelectedAccountName(),但正如您在调试窗口中看到的,GoogleAccountCredential中的字段仍然为null 我认为这可能与某些权限有
selectedAccount
和accountName
字段仍然为空
在调试过程中,您可以看到我的变量accountName
不是空的或null,我调用.setSelectedAccountName()
,但正如您在调试窗口中看到的,GoogleAccountCredential中的字段仍然为null
我认为这可能与某些权限有关?在我的清单上,我声明了以下权限:
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
我知道您在M上免费获得的
GET_ACCOUNTS
权限(根据),但其他两个权限对M-Preview来说“未知”。那么,也许是这样 android.permission.GET_ACCOUNTS
具有protectionLevel:危险,现在是联系人权限组的一部分,这意味着您应该在运行时使用新的活动.requestPermissions()请求它。
只有这样,您才能与设备上其他应用程序创建的帐户进行交互。我也有同样的问题
使用setSelectedAccount()而不是setSelectedAccountName()
设置要设置为电子邮件的帐户,并且可以将包名称作为第二个参数 我发誓,M是如此的可爱,它让我毛骨悚然。祝你好运,伙计!如果您查看文档,android.permission.GET_帐户将列在正常权限中。不管怎么说,我只是试着申请那个许可,现在它起作用了。我假设该权限在正常列表中。该特定更改是在预览2和预览3之间进行的,一定有人错过了文档中的这一点。我看看能不能把它修好。同时,您可以使用:adb shell pm list permissions-g-fThanks获取所有权限组和保护级别的列表。关于此许可被视为危险的原因的任何信息?另外,当我们请求此权限时,会出现一个对话框,上面写着“允许应用程序XYZ访问您的联系人”,这真的很糟糕。我不想访问他们的联系人,只是他们的帐户名。。。我想很多用户都会害怕。
mCredential = GoogleAccountCredential.usingOAuth2(
getApplicationContext(), Arrays.asList(SCOPES))
.setBackOff(new ExponentialBackOff());
// to set accountName manually instead of prompting user to select it
mCredential.setSelectedAccount(new Account("xyz@gmail.com", "com.android.example"));