Save the date! Android Dev Summit is coming to Mountain View, CA on November 7-8, 2018.
added in API level 28

CrossProfileApps

public class CrossProfileApps
extends Object

java.lang.Object
   ↳ android.content.pm.CrossProfileApps


Class for handling cross profile operations. Apps can use this class to interact with its instance in any profile that is in getTargetUserProfiles(). For example, app can use this class to start its main activity in managed profile.

Summary

Public methods

Drawable getProfileSwitchingIconDrawable(UserHandle userHandle)

Return a drawable that calling app can show to user for the semantic of profile switching -- launching its own activity in specified user profile.

CharSequence getProfileSwitchingLabel(UserHandle userHandle)

Return a label that calling app can show to user for the semantic of profile switching -- launching its own activity in specified user profile.

List<UserHandle> getTargetUserProfiles()

Return a list of user profiles that that the caller can use when calling other APIs in this class.

void startMainActivity(ComponentName component, UserHandle targetUser)

Starts the specified main activity of the caller package in the specified profile.

Inherited methods

Public methods

getProfileSwitchingIconDrawable

added in API level 28
public Drawable getProfileSwitchingIconDrawable (UserHandle userHandle)

Return a drawable that calling app can show to user for the semantic of profile switching -- launching its own activity in specified user profile. For example, it may return a briefcase icon if the given user handle is the managed profile one.

Parameters
userHandle UserHandle: The UserHandle of the target profile, must be one of the users returned by getTargetUserProfiles(), otherwise a SecurityException will be thrown.

This value must never be null.

Returns
Drawable an icon that calling app can show user for the semantic of launching its own activity in specified user profile.

This value will never be null.

getProfileSwitchingLabel

added in API level 28
public CharSequence getProfileSwitchingLabel (UserHandle userHandle)

Return a label that calling app can show to user for the semantic of profile switching -- launching its own activity in specified user profile. For example, it may return "Switch to work" if the given user handle is the managed profile one.

Parameters
userHandle UserHandle: The UserHandle of the target profile, must be one of the users returned by getTargetUserProfiles(), otherwise a SecurityException will be thrown.

This value must never be null.

Returns
CharSequence a label that calling app can show user for the semantic of launching its own activity in the specified user profile.

This value will never be null.

getTargetUserProfiles

added in API level 28
public List<UserHandle> getTargetUserProfiles ()

Return a list of user profiles that that the caller can use when calling other APIs in this class.

A user profile would be considered as a valid target user profile, provided that:

  • It gets caller app installed
  • It is not equal to the calling user
  • It is in the same profile group of calling user profile
  • It is enabled

Returns
List<UserHandle>

This value will never be null.

startMainActivity

added in API level 28
public void startMainActivity (ComponentName component, 
                UserHandle targetUser)

Starts the specified main activity of the caller package in the specified profile.

Parameters
component ComponentName: The ComponentName of the activity to launch, it must be exported and has action Intent.ACTION_MAIN, category Intent.CATEGORY_LAUNCHER. Otherwise, SecurityException will be thrown.

This value must never be null.

targetUser UserHandle: The UserHandle of the profile, must be one of the users returned by getTargetUserProfiles(), otherwise a SecurityException will be thrown.

This value must never be null.