diff --git a/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java b/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java index b098929e97f18a2c23e50b6c51089eb33a4c24a9..d056fb2fb29c0f49f9994d30d798e386a4252881 100644 --- a/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java +++ b/ring-android/app/src/main/java/cx/ring/client/ConversationActivity.java @@ -154,10 +154,10 @@ public class ConversationActivity extends AppCompatActivity { scrolltoBottom(); } - private int getIndex(Spinner spinner, String myString) - { + + private int getIndex(Spinner spinner, String myString) { for (int i=0, n=spinner.getCount();i<n;i++) - if (((CallContact.Phone)spinner.getItemAtPosition(i)).getNumber().equalsIgnoreCase(myString)) + if (CallContact.canonicalNumber(((CallContact.Phone)spinner.getItemAtPosition(i)).getNumber()).equalsIgnoreCase(myString)) return i; return 0; } @@ -461,15 +461,29 @@ public class ConversationActivity extends AppCompatActivity { // overridePendingTransition(R.anim.slide_down, R.anim.slide_up); } + /** + * Guess account and number to use to initiate a call + */ private Pair<Account, String> guess() { + String number = numberAdapter == null ? preferredNumber : CallContact.canonicalNumber(((CallContact.Phone) numberSpinner.getSelectedItem()).getNumber()); Account a = service.getAccount(conversation.getLastAccountUsed()); - String number = numberAdapter == null ? conversation.contact.getPhones().get(0).getNumber() : CallContact.canonicalNumber(((CallContact.Phone) numberSpinner.getSelectedItem()).getNumber()); - if (a == null) + + // Guess account from number + if (a == null && number != null) a = service.guessAccount(conversation.getContact(), number); + + // Guess number from account/call history + if (a != null && (number == null/* || number.isEmpty()*/)) + number = CallContact.canonicalNumber(conversation.getLastNumberUsed(a.getAccountID())); + + // If no account found, use first active + if (a == null) + a = service.getAccounts().get(0); + + // If no number found, use first from contact if (number == null || number.isEmpty()) - number = conversation.getLastNumberUsed(a.getAccountID()); - if (number == null || number.isEmpty()) - number = conversation.contact.getPhones().get(0).getNumber(); + number = CallContact.canonicalNumber(conversation.contact.getPhones().get(0).getNumber()); + return new Pair<>(a, number); }