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

Commit 31ce86d3 authored by John Spurlock's avatar John Spurlock Committed by Android (Google) Code Review
Browse files

Merge "Hide notification listeners setting if no listeners." into jb-mr2-dev

parents e5fc4071 55dbdf68
Loading
Loading
Loading
Loading
+21 −9
Original line number Diff line number Diff line
@@ -195,13 +195,26 @@ public class NotificationAccessSettings extends ListFragment {
    }

    void updateList() {
        mList.clear();

        loadEnabledListeners();

        getListeners(mList, mPM);
        mList.sort(new PackageItemInfo.DisplayNameComparator(mPM));

        getListView().setAdapter(mList);
    }

    static int getListenersCount(PackageManager pm) {
        return getListeners(null, pm);
    }

    private static int getListeners(ArrayAdapter<ServiceInfo> adapter, PackageManager pm) {
        int listeners = 0;
        if (adapter != null) {
            adapter.clear();
        }
        final int user = ActivityManager.getCurrentUser();

        List<ResolveInfo> installedServices = mPM.queryIntentServicesAsUser(
        List<ResolveInfo> installedServices = pm.queryIntentServicesAsUser(
                new Intent(NotificationListenerService.SERVICE_INTERFACE),
                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA,
                user);
@@ -218,13 +231,12 @@ public class NotificationAccessSettings extends ListFragment {
                        + android.Manifest.permission.BIND_NOTIFICATION_LISTENER_SERVICE);
                continue;
            }

            mList.add(info);
            if (adapter != null) {
                adapter.add(info);
            }

        mList.sort(new PackageItemInfo.DisplayNameComparator(mPM));

        getListView().setAdapter(mList);
            listeners++;
        }
        return listeners;
    }

    boolean isListenerEnabled(ServiceInfo info) {
+19 −8
Original line number Diff line number Diff line
@@ -82,6 +82,7 @@ public class SecuritySettings extends SettingsPreferenceFragment
    private static final String KEY_NOTIFICATION_ACCESS = "manage_notification_access";
    private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive";

    private PackageManager mPM;
    DevicePolicyManager mDPM;

    private ChooseLockSettingsHelper mChooseLockSettingsHelper;
@@ -111,6 +112,7 @@ public class SecuritySettings extends SettingsPreferenceFragment

        mLockPatternUtils = new LockPatternUtils(getActivity());

        mPM = getActivity().getPackageManager();
        mDPM = (DevicePolicyManager)getSystemService(Context.DEVICE_POLICY_SERVICE);

        mChooseLockSettingsHelper = new ChooseLockSettingsHelper(getActivity());
@@ -281,8 +283,15 @@ public class SecuritySettings extends SettingsPreferenceFragment
            }
        }

        final int n = getNumEnabledNotificationListeners();
        mNotificationAccess = findPreference(KEY_NOTIFICATION_ACCESS);
        if (mNotificationAccess != null) {
            final int total = NotificationAccessSettings.getListenersCount(mPM);
            if (total == 0) {
                if (deviceAdminCategory != null) {
                    deviceAdminCategory.removePreference(mNotificationAccess);
                }
            } else {
                final int n = getNumEnabledNotificationListeners();
                if (n == 0) {
                    mNotificationAccess.setSummary(getResources().getString(
                            R.string.manage_notification_access_summary_zero));
@@ -291,6 +300,8 @@ public class SecuritySettings extends SettingsPreferenceFragment
                            R.plurals.manage_notification_access_summary_nonzero,
                            n, n)));
                }
            }
        }

        return root;
    }