3

我在 Android 应用程序中调用下面的代码(用于针对 Google App Engine 进行身份验证,认为这是顺便说一句):

AccountManager accountManager = AccountManager.get(this);
accountManager.getAuthToken(mAccount, "ah",null, false, new GetAuthTokenCallback(), null);

GetAuthTokenCallback()此错误中抛出:

android.accounts.AuthenticatorException: java.lang.UnsupportedOperationException: getAuthTokenLabel not supported

身份验证过程在此停止。

奇怪的是,它完美地运行在 Android 5.5.1 设备上;UnsupportedOperationException 仅在 6.0.1 设备上发生错误。

我有我认为需要的运行时权限请求,GET_ACCOUNTS但怀疑错误源于此和 Marshmellow 的权限系统。

@TargetApi(23)
private boolean haveGetAccountPermission() {
    Log.i(TAG, "haveGetAccountPermission()");
    int hasWriteContactsPermission = ActivityCompat.checkSelfPermission(this,Manifest.permission.GET_ACCOUNTS);
    if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this,new String[] {Manifest.permission.GET_ACCOUNTS},
                REQUEST_CODE_ASK_PERMISSIONS);
        return false;
    } else {
        return true;
    }
}

任何想法都非常感谢。

4

1 回答 1

0

我不知道这是否有帮助,但我发现在执行之前立即创建一个新帐户getAuthToken()会引发此异常。

在我的例子中,我试图重命名一个帐户,我发现如果我先getAuthToken()用旧帐户执行,然后用它的内容创建一个新帐户,就不会再抛出异常了。

我怀疑这可能是棉花糖中的一个错误。

于 2016-05-10T18:45:20.437 回答