Android AccountManager addAccount在回调时抛出操作CanceledException

Android AccountManager addAccount在回调时抛出操作CanceledException,android,accountmanager,Android,Accountmanager,我正在开发一个android应用程序,使用android studio(0.8.2)和API级别19 我已经使用AccountManager实现了身份验证,但在尝试从AccountManager.addAccount中指定的回调返回的AccountManagerFuture检索数据时遇到异常。这种行为只有在从我的应用程序调用addAccount时才会发生,确切地说是在创建MainActivity时。通过android设置屏幕添加帐户时,不会发生此错误。以下是调用addAccount的代码: mA

我正在开发一个android应用程序,使用android studio(0.8.2)和API级别19

我已经使用AccountManager实现了身份验证,但在尝试从AccountManager.addAccount中指定的回调返回的AccountManagerFuture检索数据时遇到异常。这种行为只有在从我的应用程序调用addAccount时才会发生,确切地说是在创建MainActivity时。通过android设置屏幕添加帐户时,不会发生此错误。以下是调用addAccount的代码:

mAccounts = mAccountManager.getAccountsByType(mAccountType);
    if (mAccounts.length == 0) {
        Log.d("MainActivity", "No accounts of type " + mAccountType);
        mAccountManager.addAccount(
                mAccountType,
                AUTHTOKEN_TYPE_FULL_ACCESS,
                null,
                new Bundle(),
                this,
                new OnAccountAddComplete(),
                null
            );
    }
下面是回调:

private class OnAccountAddComplete implements AccountManagerCallback<Bundle> {
    @Override
    public void run(AccountManagerFuture<Bundle> result) {
        Bundle bundle;
        try {
            bundle = result.getResult();
        } catch (OperationCanceledException e) {
            e.printStackTrace();
            return;
        } catch (AuthenticatorException e) {
            e.printStackTrace();
            return;
        } catch (IOException e) {
            e.printStackTrace();
            return;
        }
        mAccount = new Account(
                bundle.getString(AccountManager.KEY_ACCOUNT_NAME),
                bundle.getString(AccountManager.KEY_ACCOUNT_TYPE)
        );
        // do more stuff
    }
}
调用
result.getResult
会抛出一个
android.accounts.OperationCanceledException
。文档仅表明用户干预或其他事件已取消操作。尽管如此,新帐户还是会被创建并添加到AccountManager中,并且可以在应用程序重新打开后成功使用

这已在不同的设备和工作站上复制。如有任何可能导致取消的信息,我们将不胜感激

W/System.err﹕ android.accounts.OperationCanceledException
W/System.err﹕ at android.accounts.AccountManager$AmsTask.internalGetResult(AccountManager.java:1503)
W/System.err﹕ at android.accounts.AccountManager$AmsTask.getResult(AccountManager.java:1531)
W/System.err﹕ at android.accounts.AccountManager$AmsTask.getResult(AccountManager.java:1452)
W/System.err﹕ at com.example.project.app.MainActivity$OnAccountAddComplete.run(MainActivity.java:256)
W/System.err﹕ at android.accounts.AccountManager$11.run(AccountManager.java:1427)
W/System.err﹕ at android.os.Handler.handleCallback(Handler.java:733)
W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:95)
W/System.err﹕ at android.os.Looper.loop(Looper.java:136)
W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:5001)
W/System.err﹕ at java.lang.reflect.Method.invokeNative(Native Method)
W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:515)
W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
W/System.err﹕ at dalvik.system.NativeStart.main(Native Method)