帐户管理器在Android中返回0个帐户

帐户管理器在Android中返回0个帐户,android,account,accountmanager,Android,Account,Accountmanager,我们已经建立了SDK,它有很多功能。在这里,我们试图在Android帐户中保存一些令牌和标识符 现在,我们观察到,当我们试图设置Account Manager类的UserData()或getUserData()方法时,Account Manager返回0个帐户 Logger.getInstance().writeFile("AccountManagerUtil::: save::: string value::: Account Manager details:: "+mAc

我们已经建立了SDK,它有很多功能。在这里,我们试图在Android帐户中保存一些令牌和标识符

现在,我们观察到,当我们试图设置Account Manager类的UserData()或getUserData()方法时,Account Manager返回0个帐户

Logger.getInstance().writeFile("AccountManagerUtil::: save::: string value::: Account Manager details:: "+mAccountManager.getAccounts().length);
    mAccountManager.setUserData(mAccount, proxyKey(key),value == null ? "" : value);
    String retValue = mAccountManager.getUserData(mAccount,proxyKey(key));
    Logger.getInstance().writeFile("AccountManagerUtil::: save::: string value::: get user data::: "+retValue);
打印值如下所示:

    2020-10-09 09:29:14.015 AccountManagerUtil::: save::: byte value::: Account Manager details:: 0
2020-10-09 09:29:14.016 AccountManagerUtil::: proxyKey::: keys:: api.next.b.br:443//msso.magIdentifier
2020-10-09 09:29:14.018 AccountManagerUtil::: save::: byte value::: set user data is completed 
2020-10-09 09:29:14.018 AccountManagerUtil::: proxyKey::: keys:: api.next.b.br:443//msso.magIdentifier
2020-10-09 09:29:14.02 AccountManagerUtil::: save::: byte value::: get user data::: null
mAccountManager = AccountManager.get(MAS.getContext());
            //Attempt to retrieve the account
            Account[] accounts = mAccountManager.getAccountsByType(accountType);
            Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: no of accounts "+accounts.length);
            for (Account account : accounts) {
                if (accountName.equals(account.name)) {
                    String password = mAccountManager.getPassword(account);
                    Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: account password "+password);
                    String savedPassword = identifier.toString();
                    if (password.equals(savedPassword)) {
                        mAccount = account;
                    }else {
                        // - case migration from old AccountManagerStoreDataSource
                        Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: SharedStorageIdentifier ");
                        mAccount = null;
                        identifier = new SharedStorageIdentifier();
                    }
                }
            }

            //Create the account if it wasn't retrieved,
            if (mAccount == null) {
                mAccount = new Account(accountName, accountType);
                if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1)
                {
                    mAccountManager.removeAccountExplicitly(mAccount);
                }
                Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: adding account explicitly "+mAccount.name);
                boolean bAcc_status = mAccountManager.addAccountExplicitly(mAccount, identifier.toString(), null);
                Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: adding account status "+bAcc_status);
            }
            Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: getting account details:: Name:: "+mAccount.name+
                    " Type::" +mAccount.type+" hashcode::  "+mAccount.hashCode());
        } catch (Exception e) {
            Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: shared storage exception "+e.getMessage());
            throw new MASSharedStorageException(e.getMessage(), e);
        }
我创建帐户的方式如下所示:

    2020-10-09 09:29:14.015 AccountManagerUtil::: save::: byte value::: Account Manager details:: 0
2020-10-09 09:29:14.016 AccountManagerUtil::: proxyKey::: keys:: api.next.b.br:443//msso.magIdentifier
2020-10-09 09:29:14.018 AccountManagerUtil::: save::: byte value::: set user data is completed 
2020-10-09 09:29:14.018 AccountManagerUtil::: proxyKey::: keys:: api.next.b.br:443//msso.magIdentifier
2020-10-09 09:29:14.02 AccountManagerUtil::: save::: byte value::: get user data::: null
mAccountManager = AccountManager.get(MAS.getContext());
            //Attempt to retrieve the account
            Account[] accounts = mAccountManager.getAccountsByType(accountType);
            Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: no of accounts "+accounts.length);
            for (Account account : accounts) {
                if (accountName.equals(account.name)) {
                    String password = mAccountManager.getPassword(account);
                    Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: account password "+password);
                    String savedPassword = identifier.toString();
                    if (password.equals(savedPassword)) {
                        mAccount = account;
                    }else {
                        // - case migration from old AccountManagerStoreDataSource
                        Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: SharedStorageIdentifier ");
                        mAccount = null;
                        identifier = new SharedStorageIdentifier();
                    }
                }
            }

            //Create the account if it wasn't retrieved,
            if (mAccount == null) {
                mAccount = new Account(accountName, accountType);
                if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1)
                {
                    mAccountManager.removeAccountExplicitly(mAccount);
                }
                Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: adding account explicitly "+mAccount.name);
                boolean bAcc_status = mAccountManager.addAccountExplicitly(mAccount, identifier.toString(), null);
                Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: adding account status "+bAcc_status);
            }
            Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: getting account details:: Name:: "+mAccount.name+
                    " Type::" +mAccount.type+" hashcode::  "+mAccount.hashCode());
        } catch (Exception e) {
            Logger.getInstance().writeFile("AccountManagerUtil::: constructor::: shared storage exception "+e.getMessage());
            throw new MASSharedStorageException(e.getMessage(), e);
        }
我的问题是,我哪里做错了。奇怪的行为是:

  • 在大多数设备中,一切正常。代码没有变化
  • 引起问题的大多数设备是摩托罗拉设备。三星或LG设备也在那里
  • 我们无法在室内复制该设备。甚至在模拟器中也没有。主要是对一些终端用户来说
  • 如果我们对该设备进行出厂重置,然后再次开始使用该设备,则一切正常
  • 是因为许可吗?或者设备帐户管理器或我的代码有问题


    请帮忙。

    有人能帮我吗。。