Merge "Persist SRVCC-related properties in GsmConnection" into nyc-mr1-dev
diff --git a/src/com/android/services/telephony/TelecomAccountRegistry.java b/src/com/android/services/telephony/TelecomAccountRegistry.java
index b069902..02215d5 100644
--- a/src/com/android/services/telephony/TelecomAccountRegistry.java
+++ b/src/com/android/services/telephony/TelecomAccountRegistry.java
@@ -16,8 +16,11 @@
package com.android.services.telephony;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -27,6 +30,8 @@
import android.net.Uri;
import android.os.Bundle;
import android.os.PersistableBundle;
+import android.os.UserHandle;
+import android.os.UserManager;
import android.telecom.PhoneAccount;
import android.telecom.PhoneAccountHandle;
import android.telecom.TelecomManager;
@@ -176,6 +181,12 @@
}
mIsVideoCapable = mPhone.isVideoEnabled();
+
+ if (!mIsPrimaryUser) {
+ Log.i(this, "Disabling video calling for secondary user.");
+ mIsVideoCapable = false;
+ }
+
if (mIsVideoCapable) {
capabilities |= PhoneAccount.CAPABILITY_VIDEO_CALLING;
}
@@ -436,6 +447,22 @@
}
};
+ private final BroadcastReceiver mUserSwitchedReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ Log.i(this, "User changed, re-registering phone accounts.");
+
+ int userHandleId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, 0);
+ UserHandle currentUserHandle = new UserHandle(userHandleId);
+ mIsPrimaryUser = UserManager.get(mContext).getPrimaryUser().getUserHandle()
+ .equals(currentUserHandle);
+
+ // Any time the user changes, re-register the accounts.
+ tearDownAccounts();
+ setupAccounts();
+ }
+ };
+
private final PhoneStateListener mPhoneStateListener = new PhoneStateListener() {
@Override
public void onServiceStateChanged(ServiceState serviceState) {
@@ -456,6 +483,7 @@
private List<AccountEntry> mAccounts = new LinkedList<AccountEntry>();
private Object mAccountsLock = new Object();
private int mServiceState = ServiceState.STATE_POWER_OFF;
+ private boolean mIsPrimaryUser = true;
// TODO: Remove back-pointer from app singleton to Service, since this is not a preferred
// pattern; redesign. This was added to fix a late release bug.
@@ -598,6 +626,11 @@
// We also need to listen for changes to the service state (e.g. emergency -> in service)
// because this could signal a removal or addition of a SIM in a single SIM phone.
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_SERVICE_STATE);
+
+ // Listen for user switches. When the user switches, we need to ensure that if the current
+ // use is not the primary user we disable video calling.
+ mContext.registerReceiver(mUserSwitchedReceiver,
+ new IntentFilter(Intent.ACTION_USER_SWITCHED));
}
/**