Move ServiceListing to SettingsLib

Also tidy things up a bit

Bug: 70902607
Test: RunSettingsRoboTests
Change-Id: Id641beb601513bb4e34a098bf2729eb98954175d
This commit is contained in:
Tony Mantler
2017-12-20 15:54:01 -08:00
parent 79f4be2e5a
commit 09d2d71760
5 changed files with 141 additions and 287 deletions

View File

@@ -19,8 +19,9 @@ package com.android.settings.notification;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.Fragment;
import android.app.NotificationManager;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.provider.Settings;
@@ -33,28 +34,35 @@ import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.android.settings.overlay.FeatureFactory;
import com.android.settings.utils.ManagedServiceSettings;
/**
* Settings screen for managing notification listener permissions
*/
public class NotificationAccessSettings extends ManagedServiceSettings {
private static final String TAG = NotificationAccessSettings.class.getSimpleName();
private static final Config CONFIG = getNotificationListenerConfig();
private static final Config CONFIG = new Config.Builder()
.setTag(TAG)
.setSetting(Settings.Secure.ENABLED_NOTIFICATION_LISTENERS)
.setIntentAction(NotificationListenerService.SERVICE_INTERFACE)
.setPermission(android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE)
.setNoun("notification listener")
.setWarningDialogTitle(R.string.notification_listener_security_warning_title)
.setWarningDialogSummary(R.string.notification_listener_security_warning_summary)
.setEmptyText(R.string.no_notification_listeners)
.build();
private static Config getNotificationListenerConfig() {
final Config c = new Config();
c.tag = TAG;
c.setting = Settings.Secure.ENABLED_NOTIFICATION_LISTENERS;
c.intentAction = NotificationListenerService.SERVICE_INTERFACE;
c.permission = android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE;
c.noun = "notification listener";
c.warningDialogTitle = R.string.notification_listener_security_warning_title;
c.warningDialogSummary = R.string.notification_listener_security_warning_summary;
c.emptyText = R.string.no_notification_listeners;
return c;
}
private NotificationManager mNm;
@Override
public int getMetricsCategory() {
return MetricsEvent.NOTIFICATION_ACCESS;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
mNm = context.getSystemService(NotificationManager.class);
}
@Override
protected Config getConfig() {
return CONFIG;
@@ -109,13 +117,10 @@ public class NotificationAccessSettings extends ManagedServiceSettings {
private static void disable(final NotificationAccessSettings parent, final ComponentName cn) {
parent.mNm.setNotificationListenerAccessGranted(cn, false);
AsyncTask.execute(new Runnable() {
@Override
public void run() {
if (!parent.mNm.isNotificationPolicyAccessGrantedForPackage(
cn.getPackageName())) {
parent.mNm.removeAutomaticZenRules(cn.getPackageName());
}
AsyncTask.execute(() -> {
if (!parent.mNm.isNotificationPolicyAccessGrantedForPackage(
cn.getPackageName())) {
parent.mNm.removeAutomaticZenRules(cn.getPackageName());
}
});
}
@@ -153,16 +158,10 @@ public class NotificationAccessSettings extends ManagedServiceSettings {
.setMessage(summary)
.setCancelable(true)
.setPositiveButton(R.string.notification_listener_disable_warning_confirm,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
disable(parent, cn);
}
})
(dialog, id) -> disable(parent, cn))
.setNegativeButton(R.string.notification_listener_disable_warning_cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// pass
}
(dialog, id) -> {
// pass
})
.create();
}