Create multi-user dual-open and multi-Open Applications in android 5.0 (2), android5.0
The previous section describes how to create a user
Create multi-user dual-open and multi-Open Applications in android 5.0 (1)
Why do we need to create a User? For example, if the window system creates a user, it will operate under the current User. The android multi-user system is like the window system.
After creating a user, you can perform operations under the current user to install or start an application.
With a user, create a workspace under the user, and install and start the apk In the workspace.
Specific operations:
Package android. app. admin; import android. content. componentName; import android. content. intent; import android. content. intentFilter; import android.net. proxyInfo; import android. OS. bundle; import android. OS. persistableBundle; import android. OS. remoteCallback; import android. OS. userHandle; import java. util. list;/*** Internal IPC interface to the device policy service. * {@ hide} */interface IDevicePolicyManager {void setPasswordQuality (in ComponentName who, int quality, int userHandle); int getPasswordQuality (in ComponentName who, int userHandle ); void setPasswordMinimumLength (in ComponentName who, int length, int userHandle); int getPasswordMinimumLength (in ComponentName who, int userHandle); void encode (in ComponentName who, int length, int userHandle ); int round (in ComponentName who, int userHandle); void setPasswordMinimumLowerCase (in ComponentName who, int length, int userHandle); int getPasswordMinimumLowerCase (in ComponentName who, int userHandle ); void encode (in ComponentName who, int length, int userHandle); int getPasswordMinimumLetters (in ComponentName who, int userHandle); void setPasswordMinimumNumeric (in ComponentName who, int length, int userHandle ); int getPasswordMinimumNumeric (in ComponentName who, int userHandle); void encode (in ComponentName who, int length, int userHandle); int getPasswordMinimumSymbols (in ComponentName who, int userHandle ); void encode (in ComponentName who, int length, int userHandle); int getPasswordMinimumNonLetter (in ComponentName who, int userHandle); void setPasswordHistoryLength (in ComponentName who, int length, int userHandle ); int getPasswordHistoryLength (in ComponentName who, int userHandle); void trim (in ComponentName who, long expiration, int userHandle); long getPasswordExpirationTimeout (in ComponentName who, int userHandle ); long getPasswordExpiration (in ComponentName who, int userHandle); boolean round (int userHandle); int getCurrentFailedPasswordAttempts (int userHandle); int round (int userHandle); void round (in ComponentName admin, int num, int userHandle); int trim (in ComponentName admin, int userHandle); boolean resetPassword (String password, int flags, int userHandle); void setMaximumTimeToLock (in ComponentName who, long timeMs, int userHandle); long getMaximumTimeToLock (in ComponentName who, int userHandle); void lockNow (); void wipeData (int flags, int userHandle); ComponentName setGlobalProxy (in ComponentName admin, string proxySpec, String exclusionList, int userHandle); ComponentName getGlobalProxyAdmin (int userHandle); void extract (in ComponentName admin, in ProxyInfo proxyInfo); int extract (in ComponentName who, boolean encrypt, int userHandle); boolean getStorageEncryption (in ComponentName who, int userHandle); int getStorageEncryptionStatus (int userHandle); void setCameraDisabled (in ComponentName who, boolean disabled, int userHandle ); boolean getCameraDisabled (in ComponentName who, int userHandle); void setScreenCaptureDisabled (in ComponentName who, int userHandle, boolean disabled); boolean getScreenCaptureDisabled (in ComponentName who, int userHandle ); void trim (in ComponentName who, int which, int userHandle); int trim (in ComponentName who, int userHandle); void setActiveAdmin (in ComponentName policyReceiver, boolean refreshing, int userHandle ); boolean isAdminActive (in ComponentName policyReceiver, int userHandle); List <ComponentName> getActiveAdmins (int userHandle); boolean values (String packageName, int userHandle); void getRemoveWarning (in ComponentName policyReceiver, in RemoteCallback result, int userHandle); void removeActiveAdmin (in ComponentName policyer er, int userHandle); boolean hasGrantedPolicy (in ComponentName policyReceiver, int usesPolicy, int userHandle); void handle (int quality, int length, int letters, int uppercase, int lowercase, int numbers, int symbols, int nonletter, int userHandle); void reportFailedPasswordAttempt (int userHandle); void encode (int userHandle ); boolean setDeviceOwner (String packageName, String ownerName); boolean isDeviceOwner (String packageName); String getDeviceOwner (); String getDeviceOwnerName (); void clearDeviceOwner (String packageName ); boolean setProfileOwner (in ComponentName who, String ownerName, int userHandle); ComponentName getProfileOwner (int userHandle); String getProfileOwnerName (int userHandle); void setProfileEnabled (in ComponentName who ); // start the workspace void setProfileName (in ComponentName who, String profileName) void clearProfileOwner (in ComponentName who); boolean hasUserSetupCompleted (); boolean installCaCert (in ComponentName admin, in bytes [] certBuffer); void uninstallCaCert (in ComponentName admin, in String alias); void enforceCanManageCaCerts (in ComponentName admin); boolean installKeyPair (in ComponentName who, in byte [] privKeyBuffer, in byte [] certBuffer, String alias); void addPersistentPreferredActivity (in ComponentName admin, in IntentFilter filter, in ComponentName activity); void Merge (in ComponentName admin, String packageName ); void setApplicationRestrictions (in ComponentName who, in String packageName, in Bundle settings); Bundle getApplicationRestrictions (in ComponentName who, in String packageName); void aggregate (in ComponentName who, in ComponentName provider ); componentName partition (int userHandle); void setUserRestriction (in ComponentName who, in String key, boolean enable); void addCrossProfileIntentFilter (in ComponentName admin, in IntentFilter filter, int flags ); // create a workspace void aggregate (in ComponentName admin); boolean setPermittedAccessibilityServices (in ComponentName admin, in List packageList); List getPermittedAccessibilityServices (in ComponentName admin); List aggregate (int userId ); boolean setPermittedInputMethods (in ComponentName admin, in List packageList); List getPermittedInputMethods (in ComponentName admin); List attributes (); boolean setapplicationhidhidden (in ComponentName admin, in String packageName, boolean hidden ); boolean isApplicationHidden (in ComponentName admin, in String packageName); UserHandle createUser (in ComponentName who, in String name); UserHandle createAndInitializeUser (in ComponentName who, in String name, in String profileOwnerName, in ComponentName extensions, in Bundle adminExtras); boolean removeUser (in ComponentName who, in UserHandle userHandle); boolean switchUser (in ComponentName who, in UserHandle userHandle); void enableSystemApp (in ComponentName admin, in String packageName); // set the app status int enableSystemAppWithIntent (in ComponentName admin, in Intent intent); void setAccountManagementDisabled (in ComponentName who, in String accountType, in boolean disabled ); string [] getAccountTypesWithManagementDisabled (); String [] partition (int userId); void setLockTaskPackages (in ComponentName who, in String [] packages); String [] getLockTaskPackages (in ComponentName who ); boolean isLockTaskPermitted (in String pkg); void setGlobalSetting (in ComponentName who, in String setting, in String value); void setSecureSetting (in ComponentName who, in String setting, in String value ); void setMasterVolumeMuted (in ComponentName admin, boolean on); boolean evaluate (in ComponentName admin); void policylocktaskmodechanged (boolean isEnabled, String pkg, int userId); void setUninstallBlocked (in ComponentName admin, in String packageName, boolean uninstallBlocked); boolean isUninstallBlocked (in ComponentName admin, in String packageName); void publish (in ComponentName who, boolean disabled); boolean getCrossProfileCallerIdDisabled (in ComponentName who ); boolean aggregate (int userId); void setTrustAgentConfiguration (in ComponentName admin, in ComponentName agent, in PersistableBundle args, int userId); List <PersistableBundle> getTrustAgentConfiguration (in ComponentName admin, in ComponentName agent, int userId); boolean addCrossProfileWidgetProvider (in ComponentName admin, String packageName); boolean removeCrossProfileWidgetProvider (in ComponentName admin, String packageName); List <String> allow (in ComponentName admin ); void setAutoTimeRequired (in ComponentName who, int userHandle, boolean required); boolean getAutoTimeRequired (); boolean isRemovingAdmin (in ComponentName adminReceiver, int userHandle );}