Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 127fa655 authored by Irina Dumitrescu's avatar Irina Dumitrescu
Browse files

Disable notification settings access from work apps.

Fixes: 79241388
Test: the following command does not open the notification settings in
work profile user:
$ adb shell am start --user $USER -W -a android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS
Moreover, triggering the notifications from a sample app results in the
new toast being displayed.

Change-Id: I0a330a9cf22c813aea7600557660868263817e1e
parent 0c605c80
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -6917,6 +6917,8 @@
    <string name="app_and_notification_dashboard_title">Apps &amp; notifications</string>
    <!-- Summary for Apps & Notification settings, explaining a few important settings under it [CHAR LIMIT=NONE]-->
    <string name="app_and_notification_dashboard_summary">Permissions, default apps</string>
    <!-- Toast text for notification settings in the work profile. This is shown when an app in the work profile attempts to open notification settings. [CHAR LIMIT=NONE] -->
    <string name="notification_settings_work_profile">Notification access is not available for apps in the work profile.</string>
    <!-- Title for setting tile leading to account settings [CHAR LIMIT=40]-->
    <string name="account_dashboard_title">Accounts</string>
    <!-- Summary for account settings tiles when there is no accounts on device [CHAR LIMIT=NONE]-->
+14 −0
Original line number Diff line number Diff line
@@ -23,10 +23,12 @@ import android.content.ComponentName;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.UserManager;
import android.provider.SearchIndexableResource;
import android.provider.Settings;
import android.service.notification.NotificationListenerService;

import android.widget.Toast;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
@@ -61,6 +63,18 @@ public class NotificationAccessSettings extends ManagedServiceSettings {

    private NotificationManager mNm;

    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        final Context ctx = getContext();
        if (UserManager.get(ctx).isManagedProfile()) {
            // Apps in the work profile do not support notification listeners.
            Toast.makeText(ctx, R.string.notification_settings_work_profile, Toast.LENGTH_SHORT)
                .show();
            finish();
        }
    }

    @Override
    public int getMetricsCategory() {
        return MetricsEvent.NOTIFICATION_ACCESS;