Send PhoneAccount register/unregistered intents to default dialer.
A few cleanups:
1. When sending the register/unregister phone account intents, previously
there was no attempt made to ensure the intents were only sent when a
new account was added, or an existing one was removed. Cleaned this up
so that we don't over-send the intents.
2. Minor fix to account diff string in PhoneAccountRegistrar which would
cause icon to always be shown as a diff; removed since bitmaps can't be
compared.
3. Also sending the intents to the default dialer app as an explicit
intent.
Cherry-pick from aosp master to resolve conflicts.
Test: Manual
Bug: 37106957
Change-Id: I7fdaa3e225df6fe3aaf292f9b0b93042f69ca469
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index af633fb..8cdec30 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -120,6 +120,10 @@
public void onAccountsChanged(PhoneAccountRegistrar registrar) {}
public void onDefaultOutgoingChanged(PhoneAccountRegistrar registrar) {}
public void onSimCallManagerChanged(PhoneAccountRegistrar registrar) {}
+ public void onPhoneAccountRegistered(PhoneAccountRegistrar registrar,
+ PhoneAccountHandle handle) {}
+ public void onPhoneAccountUnRegistered(PhoneAccountRegistrar registrar,
+ PhoneAccountHandle handle) {}
}
/**
@@ -652,14 +656,17 @@
// !!! IMPORTANT !!! It is important that we do not read the enabled state that the
// source app provides or else an third party app could enable itself.
boolean isEnabled = false;
+ boolean isNewAccount;
PhoneAccount oldAccount = getPhoneAccountUnchecked(account.getAccountHandle());
if (oldAccount != null) {
mState.accounts.remove(oldAccount);
isEnabled = oldAccount.isEnabled();
- Log.i(this, getAccountDiffString(account, oldAccount));
+ Log.i(this, "Modify account: %s", getAccountDiffString(account, oldAccount));
+ isNewAccount = false;
} else {
Log.i(this, "New phone account registered: " + account);
+ isNewAccount = true;
}
// When registering a self-managed PhoneAccount we enforce the rule that the label that the
@@ -695,6 +702,9 @@
write();
fireAccountsChanged();
+ if (isNewAccount) {
+ fireAccountRegistered(account.getAccountHandle());
+ }
}
public void unregisterPhoneAccount(PhoneAccountHandle accountHandle) {
@@ -703,6 +713,7 @@
if (mState.accounts.remove(account)) {
write();
fireAccountsChanged();
+ fireAccountUnRegistered(accountHandle);
}
}
}
@@ -748,6 +759,18 @@
}
}
+ private void fireAccountRegistered(PhoneAccountHandle handle) {
+ for (Listener l : mListeners) {
+ l.onPhoneAccountRegistered(this, handle);
+ }
+ }
+
+ private void fireAccountUnRegistered(PhoneAccountHandle handle) {
+ for (Listener l : mListeners) {
+ l.onPhoneAccountUnRegistered(this, handle);
+ }
+ }
+
private void fireAccountsChanged() {
for (Listener l : mListeners) {
l.onAccountsChanged(this);
@@ -771,7 +794,6 @@
Log.piiHandle(account2.getAddress()));
appendDiff(sb, "cap", account1.getCapabilities(), account2.getCapabilities());
appendDiff(sb, "hl", account1.getHighlightColor(), account2.getHighlightColor());
- appendDiff(sb, "icon", account1.getIcon(), account2.getIcon());
appendDiff(sb, "lbl", account1.getLabel(), account2.getLabel());
appendDiff(sb, "desc", account1.getShortDescription(), account2.getShortDescription());
appendDiff(sb, "subAddr", Log.piiHandle(account1.getSubscriptionAddress()),