summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com/android/server/telecom/CreateConnectionProcessor.java3
-rw-r--r--src/com/android/server/telecom/PhoneAccountRegistrar.java22
2 files changed, 15 insertions, 10 deletions
diff --git a/src/com/android/server/telecom/CreateConnectionProcessor.java b/src/com/android/server/telecom/CreateConnectionProcessor.java
index 67c63a02..f31f4232 100644
--- a/src/com/android/server/telecom/CreateConnectionProcessor.java
+++ b/src/com/android/server/telecom/CreateConnectionProcessor.java
@@ -228,8 +228,7 @@ final class CreateConnectionProcessor {
CallAttemptRecord record = new CallAttemptRecord(
mPhoneAccountRegistrar.getSimCallManager(),
mAttemptRecords.get(0).targetPhoneAccount);
- Log.v(this, "setConnectionManager, changing %s -> %s",
- mAttemptRecords.get(0).targetPhoneAccount, record);
+ Log.v(this, "setConnectionManager, changing %s -> %s", mAttemptRecords.get(0), record);
mAttemptRecords.set(0, record);
} else {
Log.v(this, "setConnectionManager, not changing");
diff --git a/src/com/android/server/telecom/PhoneAccountRegistrar.java b/src/com/android/server/telecom/PhoneAccountRegistrar.java
index bb231237..35502015 100644
--- a/src/com/android/server/telecom/PhoneAccountRegistrar.java
+++ b/src/com/android/server/telecom/PhoneAccountRegistrar.java
@@ -250,7 +250,8 @@ public final class PhoneAccountRegistrar {
// Return the registered sim call manager iff it still exists (we keep a sticky
// setting to survive account deletion and re-addition)
for (int i = 0; i < mState.accounts.size(); i++) {
- if (mState.accounts.get(i).getAccountHandle().equals(mState.simCallManager)) {
+ if (mState.accounts.get(i).getAccountHandle().equals(mState.simCallManager)
+ && !resolveComponent(mState.simCallManager.getComponentName()).isEmpty()) {
return mState.simCallManager;
}
}
@@ -260,14 +261,9 @@ public final class PhoneAccountRegistrar {
String defaultConnectionMgr =
mContext.getResources().getString(R.string.default_connection_manager_component);
if (!TextUtils.isEmpty(defaultConnectionMgr)) {
- PackageManager pm = mContext.getPackageManager();
-
ComponentName componentName = ComponentName.unflattenFromString(defaultConnectionMgr);
- Intent intent = new Intent(ConnectionService.SERVICE_INTERFACE);
- intent.setComponent(componentName);
-
// Make sure that the component can be resolved.
- List<ResolveInfo> resolveInfos = pm.queryIntentServices(intent, 0);
+ List<ResolveInfo> resolveInfos = resolveComponent(componentName);
if (!resolveInfos.isEmpty()) {
// See if there is registered PhoneAccount by this component.
List<PhoneAccountHandle> handles = getAllPhoneAccountHandles();
@@ -287,6 +283,13 @@ public final class PhoneAccountRegistrar {
return null;
}
+ private List<ResolveInfo> resolveComponent(ComponentName componentName) {
+ PackageManager pm = mContext.getPackageManager();
+ Intent intent = new Intent(ConnectionService.SERVICE_INTERFACE);
+ intent.setComponent(componentName);
+ return pm.queryIntentServices(intent, 0);
+ }
+
/**
* Retrieves a list of all {@link PhoneAccountHandle}s registered.
*
@@ -520,7 +523,10 @@ public final class PhoneAccountRegistrar {
List<PhoneAccountHandle> accountHandles = new ArrayList<>();
for (PhoneAccount m : mState.accounts) {
if (m.hasCapabilities(flags) && (uriScheme == null || m.supportsUriScheme(uriScheme))) {
- accountHandles.add(m.getAccountHandle());
+ // Also filter out unresolveable accounts
+ if (!resolveComponent(m.getAccountHandle().getComponentName()).isEmpty()) {
+ accountHandles.add(m.getAccountHandle());
+ }
}
}
return accountHandles;