TrustedWebActivityService

public class TrustedWebActivityService
extends Service

java.lang.Object
   ↳ android.content.Context
     ↳ android.content.ContextWrapper
       ↳ android.app.Service
         ↳ androidx.browser.trusted.TrustedWebActivityService


The TrustedWebActivityService lives in a client app and serves requests from a Trusted Web Activity provider. At present it only serves requests to do with notifications.

When the provider receives a notification from a scope that is associated with a Trusted Web Activity client app, it will attempt to connect to a TrustedWebActivityService and forward calls. This allows the client app to display the notifications itself, meaning it is attributable to the client app and is managed by notification permissions of the client app, not the provider.

TrustedWebActivityService is usable as it is, by adding the following to your AndroidManifest:

 

     

     
         
         
     
 
 
The SMALL_ICON resource should point to a drawable to be used for the notification's small icon.

Alternatively for greater customization, TrustedWebActivityService can be extended and overridden. In this case the manifest entry should be updated to point to the extending class.

As this is an AIDL Service, calls to getSmallIconId(), notifyNotificationWithChannel(String, int, Notification, String) and cancelNotification(String, int) can occur on different Binder threads, so overriding implementations need to be thread-safe.

For security, the TrustedWebActivityService will check that whatever connects to it is the Trusted Web Activity provider that it was previously verified with (through setVerifiedProvider(Context, String)).

Summary

Constants

String ACTION_TRUSTED_WEB_ACTIVITY_SERVICE

An Intent Action used by the provider to find the TrustedWebActivityService or subclass.

String KEY_SMALL_ICON_BITMAP

The key to use to store a Bitmap to return from the getSmallIconBitmap() method.

String META_DATA_NAME_SMALL_ICON

The Android Manifest meta-data name to specify a small icon id to use.

int SMALL_ICON_NOT_SET

Used as a return value of getSmallIconId() when the icon is not provided.

Inherited constants

Public constructors

TrustedWebActivityService()

Public methods

boolean areNotificationsEnabled(String channelName)

Checks whether notifications are enabled.

void cancelNotification(String platformTag, int platformId)

Cancels a notification.

Bundle getSmallIconBitmap()

Returns a Bundle containing a bitmap to be use as the small icon for any notifications.

int getSmallIconId()

Returns the Android resource id of a drawable to be used for the small icon of the notification.

boolean notifyNotificationWithChannel(String platformTag, int platformId, Notification notification, String channelName)

Displays a notification.

final IBinder onBind(Intent intent)
void onCreate()

Called by the system when the service is first created.

final boolean onUnbind(Intent intent)
static final void setVerifiedProvider(Context context, String provider)

Sets (asynchronously) the package that this service will accept connections from.

Inherited methods

Constants

ACTION_TRUSTED_WEB_ACTIVITY_SERVICE

public static final String ACTION_TRUSTED_WEB_ACTIVITY_SERVICE

An Intent Action used by the provider to find the TrustedWebActivityService or subclass.

Constant Value: "android.support.customtabs.trusted.TRUSTED_WEB_ACTIVITY_SERVICE"

KEY_SMALL_ICON_BITMAP

public static final String KEY_SMALL_ICON_BITMAP

The key to use to store a Bitmap to return from the getSmallIconBitmap() method.

Constant Value: "android.support.customtabs.trusted.SMALL_ICON_BITMAP"

META_DATA_NAME_SMALL_ICON

public static final String META_DATA_NAME_SMALL_ICON

The Android Manifest meta-data name to specify a small icon id to use.

Constant Value: "android.support.customtabs.trusted.SMALL_ICON"

SMALL_ICON_NOT_SET

public static final int SMALL_ICON_NOT_SET

Used as a return value of getSmallIconId() when the icon is not provided.

Constant Value: -1 (0xffffffff)

Public constructors

TrustedWebActivityService

public TrustedWebActivityService ()

Public methods

areNotificationsEnabled

public boolean areNotificationsEnabled (String channelName)

Checks whether notifications are enabled.

Parameters
channelName String: The name of the notification channel to be used on Android O+.

Returns
boolean Whether notifications are enabled.

cancelNotification

public void cancelNotification (String platformTag, 
                int platformId)

Cancels a notification.

Parameters
platformTag String: The notification tag, see NotificationManager.cancel(String, int).

platformId int: The notification id, see NotificationManager.cancel(String, int).

getSmallIconBitmap

public Bundle getSmallIconBitmap ()

Returns a Bundle containing a bitmap to be use as the small icon for any notifications.

Returns
Bundle A Bundle that may contain a Bitmap contained with key KEY_SMALL_ICON_BITMAP. The bundle may be empty if the client app does not provide a small icon.

getSmallIconId

public int getSmallIconId ()

Returns the Android resource id of a drawable to be used for the small icon of the notification. This is called by the provider as it is constructing the notification so a complete notification can be passed to the client. Default behaviour looks for meta-data with the name META_DATA_NAME_SMALL_ICON in service section of the manifest.

Returns
int A resource id for the small icon, or SMALL_ICON_NOT_SET if not found.

notifyNotificationWithChannel

public boolean notifyNotificationWithChannel (String platformTag, 
                int platformId, 
                Notification notification, 
                String channelName)

Displays a notification.

Parameters
platformTag String: The notification tag, see NotificationManager.notify(String, int, Notification).

platformId int: The notification id, see NotificationManager.notify(String, int, Notification).

notification Notification: The notification to be displayed, constructed by the provider.

channelName String: The name of the notification channel that the notification should be displayed on. This method gets or creates a channel from the name and modifies the notification to use that channel.

Returns
boolean Whether the notification was successfully displayed (the channel/app may be blocked by the user).

onBind

public final IBinder onBind (Intent intent)

Parameters
intent Intent

Returns
IBinder

onCreate

public void onCreate ()

Called by the system when the service is first created. Do not call this method directly. Overrides must call super.onCreate().

onUnbind

public final boolean onUnbind (Intent intent)

Parameters
intent Intent

Returns
boolean

setVerifiedProvider

public static final void setVerifiedProvider (Context context, 
                String provider)

Sets (asynchronously) the package that this service will accept connections from.

Parameters
context Context: A context to be used to access SharedPreferences.

provider String: The package of the provider to accept connections from or null to clear.