Come richiedere i permessi per il NotificationListenerService in Android

Accedere alle notifiche postate e rimosse nella barra delle notifiche tramite il NotificationListenerService e il permesso ACTION_NOTIFICATION_LISTENER_SETTINGS

A partire dall’API Level 18, Android consente di accedere alle notifiche postate nella barra superiore grazie al NotificationListenerService. Attraverso i metodi onNotificationPosted e onNotificationRemoved è possibile essere notificati ogni qualvolta viene postata una nuova notifica e quando viene rimossa. Per poter utilizzare questa funzionalità, l’utente deve necessariamente concedere manualmente i permessi. Vediamo come fare:

  1. Definiamo due costanti: la prima serve per verificare se il permesso è garantito, mentre la seconda viene utilizzata per visualizzare la finestra in cui richiedere il permesso:

      private static final String ACTION_NOTIFICATION_LISTENER = "enabled_notification_listeners";
      private static final String ACTION_NOTIFICATION_LISTENER_SETTINGS = "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS";

  2. Definiamo il metodo checkNotificationListenerPermission in questo modo:

      private boolean checkNotificationListenerPermission() {
        return Settings.Secure.getString(getActivity().getContentResolver(),
          ACTION_NOTIFICATION_LISTENER).contains(
          getActivity().getApplicationContext().getPackageName());
      }

    Il metodo appena creato ci consente di verificare se il permesso di accesso alla notifiche è stato concesso, in caso negativo apriremo la finestra in cui andremo a verifichiamo se il permesso è stato già concesso. In caso contrario deve essere richiesto tramite la creazione di un nuovo Intent con il permesso android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS.

      if (!checkNotificationListenerPermission()) {
        // Permission is not granted
        Toast.makeText(getActivity().getApplicationContext(),
          R.string.notificationPermission,
          Toast.LENGTH_SHORT)
          .show();

        Intent intent = new Intent(ACTION_NOTIFICATION_LISTENER_SETTINGS);
        startActivity(intent);
      } else {
        // Notification access granted, do something
      }

  3. La stringa notificationPermission sarà definita nel file <em>strings.xml in questo modo:
    <string name="notificationPermission">Grant notification permission</string>

  4. Per approfondire Android ecco la guida completa completa: Guida Android.

    ngg_shortcode_0_placeholder
Pubblicato in Android, Programmazione Taggato con: , , , , , ,

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

*