Add intent for entering communal settings
This allows other apps to link to communal settings.
Fixes: 276742740
Test: adb shell am start -a android.settings.COMMUNAL_SETTINGS
Test: switched to secondary user, attempted to launch using command
above. Verified it didn't work
Change-Id: I5e845ecba58d8443d41aeea95bc6068a0041cac8
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 100a071..cebe7a2 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -3293,6 +3293,24 @@
</activity>
<activity
+ android:name="Settings$CommunalSettingsActivity"
+ android:label="@string/communal_settings_title"
+ android:exported="true"
+ android:icon="@drawable/ia_settings_communal">
+ <intent-filter android:priority="1">
+ <action android:name="android.settings.COMMUNAL_SETTINGS" />
+ <category android:name="android.intent.category.BROWSABLE" />
+ <category android:name="android.intent.category.DEFAULT" />
+ </intent-filter>
+ <meta-data android:name="com.android.settings.FRAGMENT_CLASS"
+ android:value="com.android.settings.communal.CommunalDashboardFragment" />
+ <meta-data android:name="com.android.settings.HIGHLIGHT_MENU_KEY"
+ android:value="@string/menu_key_communal"/>
+ <meta-data android:name="com.android.settings.PRIMARY_PROFILE_CONTROLLED"
+ android:value="true" />
+ </activity>
+
+ <activity
android:name="Settings$UserSettingsActivity"
android:label="@string/user_settings_title"
android:exported="true"
diff --git a/src/com/android/settings/Settings.java b/src/com/android/settings/Settings.java
index 50a52aa..990f18a 100644
--- a/src/com/android/settings/Settings.java
+++ b/src/com/android/settings/Settings.java
@@ -29,6 +29,7 @@
import com.android.internal.annotations.VisibleForTesting;
import com.android.settings.biometrics.face.FaceSettings;
+import com.android.settings.communal.CommunalPreferenceController;
import com.android.settings.core.FeatureFlags;
import com.android.settings.enterprise.EnterprisePrivacySettings;
import com.android.settings.network.MobileNetworkIntentConverter;
@@ -314,6 +315,16 @@
public static class AndroidBeamSettingsActivity extends SettingsActivity { /* empty */ }
public static class WifiDisplaySettingsActivity extends SettingsActivity { /* empty */ }
public static class DreamSettingsActivity extends SettingsActivity { /* empty */ }
+ /** Activity to manage communal settings */
+ public static class CommunalSettingsActivity extends SettingsActivity {
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ if (!CommunalPreferenceController.isAvailable(this)) {
+ finish();
+ }
+ }
+ }
public static class NotificationStationActivity extends SettingsActivity { /* empty */ }
public static class UserSettingsActivity extends SettingsActivity { /* empty */ }
public static class NotificationAccessSettingsActivity extends SettingsActivity { /* empty */ }
diff --git a/src/com/android/settings/communal/CommunalPreferenceController.java b/src/com/android/settings/communal/CommunalPreferenceController.java
index 67fd389..706e392 100644
--- a/src/com/android/settings/communal/CommunalPreferenceController.java
+++ b/src/com/android/settings/communal/CommunalPreferenceController.java
@@ -32,8 +32,14 @@
@Override
public int getAvailabilityStatus() {
- return (mContext.getResources().getBoolean(R.bool.config_show_communal_settings)
- && Utils.canCurrentUserDream(mContext))
- ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ return isAvailable(mContext) ? AVAILABLE : UNSUPPORTED_ON_DEVICE;
+ }
+
+ /**
+ * Returns whether communal preferences are available.
+ */
+ public static boolean isAvailable(Context context) {
+ return context.getResources().getBoolean(R.bool.config_show_communal_settings)
+ && Utils.canCurrentUserDream(context);
}
}
diff --git a/src/com/android/settings/core/gateway/SettingsGateway.java b/src/com/android/settings/core/gateway/SettingsGateway.java
index 708f317..87d0a7e 100644
--- a/src/com/android/settings/core/gateway/SettingsGateway.java
+++ b/src/com/android/settings/core/gateway/SettingsGateway.java
@@ -78,6 +78,7 @@
import com.android.settings.bluetooth.BluetoothFindBroadcastsFragment;
import com.android.settings.bluetooth.BluetoothPairingDetail;
import com.android.settings.bugreporthandler.BugReportHandlerPicker;
+import com.android.settings.communal.CommunalDashboardFragment;
import com.android.settings.connecteddevice.AdvancedConnectedDeviceDashboardFragment;
import com.android.settings.connecteddevice.ConnectedDeviceDashboardFragment;
import com.android.settings.connecteddevice.NfcAndPaymentFragment;
@@ -275,6 +276,7 @@
SystemNavigationGestureSettings.class.getName(),
DataUsageSummary.class.getName(),
DreamSettings.class.getName(),
+ CommunalDashboardFragment.class.getName(),
UserSettings.class.getName(),
NotificationAccessSettings.class.getName(),
NotificationAccessDetails.class.getName(),