Merge "Disable call settings for secondary users." into lmp-dev
diff --git a/src/com/android/dialer/settings/DialerSettingsActivity.java b/src/com/android/dialer/settings/DialerSettingsActivity.java
index 8d41d77..b47a4ed 100644
--- a/src/com/android/dialer/settings/DialerSettingsActivity.java
+++ b/src/com/android/dialer/settings/DialerSettingsActivity.java
@@ -5,6 +5,8 @@
 import android.content.Context;
 import android.content.SharedPreferences;
 import android.os.Bundle;
+import android.os.UserHandle;
+import android.os.UserManager;
 import android.preference.PreferenceManager;
 import android.preference.PreferenceActivity.Header;
 import android.text.TextUtils;
@@ -29,6 +31,8 @@
     protected SharedPreferences mPreferences;
     private HeaderAdapter mHeaderAdapter;
 
+    private static final int OWNER_HANDLE_ID = 0;
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -42,15 +46,17 @@
     public void onBuildHeaders(List<Header> target) {
         final Header contactDisplayHeader = new Header();
         contactDisplayHeader.titleRes = R.string.settings_contact_display_options_title;
-        contactDisplayHeader.summaryRes = R.string.settings_contact_display_options_description;
         contactDisplayHeader.fragment = DisplayOptionsPreferenceFragment.class.getName();
         target.add(contactDisplayHeader);
 
-        final Header callSettingHeader = new Header();
-        callSettingHeader.titleRes = R.string.call_settings_label;
-        callSettingHeader.summaryRes = R.string.call_settings_description;
-        callSettingHeader.intent = DialtactsActivity.getCallSettingsIntent();
-        target.add(callSettingHeader);
+        // Only add the call settings header if the current user is the primary/owner user.
+        if (isPrimaryUser()) {
+            final Header callSettingHeader = new Header();
+            callSettingHeader.titleRes = R.string.call_settings_label;
+            callSettingHeader.summaryRes = R.string.call_settings_description;
+            callSettingHeader.intent = DialtactsActivity.getCallSettingsIntent();
+            target.add(callSettingHeader);
+        }
     }
 
     @Override
@@ -85,6 +91,23 @@
     }
 
     /**
+     * Whether a user handle associated with the current user is that of the primary owner. That is,
+     * whether there is a user handle which has an id which matches the owner's handle.
+     * @return Whether the current user is the primary user.
+     */
+    private boolean isPrimaryUser() {
+        UserManager userManager = (UserManager) getSystemService(Context.USER_SERVICE);
+        List<UserHandle> userHandles = userManager.getUserProfiles();
+        for (int i = 0; i < userHandles.size(); i++){
+            if (userHandles.get(i).myUserId() == OWNER_HANDLE_ID) {
+                return true;
+            }
+        }
+
+        return false;
+    }
+
+    /**
      * This custom {@code ArrayAdapter} is mostly identical to the equivalent one in
      * {@code PreferenceActivity}, except with a local layout resource.
      */
@@ -130,7 +153,6 @@
             } else {
                 holder.summary.setVisibility(View.GONE);
             }
-
             return view;
         }
     }