/** * Get accounts that watch a specific address. Returns empty list if no account exists */ public List<WalletAccount> getAccounts(final AbstractAddress address) { lock.lock(); try { ImmutableList.Builder<WalletAccount> builder = ImmutableList.builder(); CoinType type = address.getType(); if (isAccountExists(type)) { for (WalletAccount account : accountsByType.get(type)) { if (account.isAddressMine(address)) { builder.add(account); } } } return builder.build(); } finally { lock.unlock(); } }
private void processAddress(String addressStr) throws CoinURIParseException, AddressMalformedException { List<CoinType> possibleTypes = GenericUtils.getPossibleTypes(addressStr); if (possibleTypes.size() == 1) { AbstractAddress address = possibleTypes.get(0).newAddress(addressStr); processUri(CoinURI.convertToCoinURI(address, null, null, null)); } else { // This address string could be more that one coin type so first check if this address // comes from an account to determine the type. List<WalletAccount> possibleAccounts = getAccounts(possibleTypes); AbstractAddress addressOfAccount = null; for (WalletAccount account : possibleAccounts) { AbstractAddress testAddress = account.getCoinType().newAddress(addressStr); if (account.isAddressMine(testAddress)) { addressOfAccount = testAddress; break; } } if (addressOfAccount != null){ // If address is from an account don't show a dialog. processUri(CoinURI.convertToCoinURI(addressOfAccount, null, null, null)); } else { // As a last resort let the use choose the correct coin type showPayToDialog(addressStr); } } }
for (WalletAccount account : possibleAccounts) { AbstractAddress testAddress = account.getCoinType().newAddress(addressStr); if (account.isAddressMine(testAddress)) { addressOfAccount = testAddress; break;