Loading api/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -6115,8 +6115,12 @@ package android.app { method public android.view.WindowAnimationFrameStats getWindowAnimationFrameStats(); method public android.view.WindowContentFrameStats getWindowContentFrameStats(int); method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows(); method public void grantRuntimePermission(java.lang.String, java.lang.String); method public void grantRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle); method public boolean injectInputEvent(android.view.InputEvent, boolean); method public boolean performGlobalAction(int); method public void revokeRuntimePermission(java.lang.String, java.lang.String); method public void revokeRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle); method public void setOnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener); method public boolean setRotation(int); method public void setRunAsMonkey(boolean); api/test-current.txt +4 −2 Original line number Diff line number Diff line package android { public static final class Manifest.permission { field public static final java.lang.String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING"; field public static final java.lang.String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE"; field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS"; field public static final java.lang.String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS"; } } Loading Loading @@ -127,8 +129,8 @@ package android.app { public final class UiAutomation { method public void destroy(); method public android.os.ParcelFileDescriptor[] executeShellCommandRw(java.lang.String); method public boolean grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public boolean revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public deprecated boolean grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public deprecated boolean revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); } public class UiModeManager { Loading core/java/android/app/UiAutomation.java +64 −18 Original line number Diff line number Diff line Loading @@ -883,16 +883,36 @@ public final class UiAutomation { } /** * Grants a runtime permission to a package for a user. * Grants a runtime permission to a package. * @param packageName The package to which to grant. * @param permission The permission to grant. * @return Whether granting succeeded. * * @throws SecurityException if unable to grant the permission. */ public void grantRuntimePermission(String packageName, String permission) { grantRuntimePermissionAsUser(packageName, permission, android.os.Process.myUserHandle()); } /** * @deprecated replaced by * {@link #grantRuntimePermissionAsUser(String, String, UserHandle)}. * @hide */ @Deprecated @TestApi public boolean grantRuntimePermission(String packageName, String permission, UserHandle userHandle) { grantRuntimePermissionAsUser(packageName, permission, userHandle); return true; } /** * Grants a runtime permission to a package for a user. * @param packageName The package to which to grant. * @param permission The permission to grant. * @throws SecurityException if unable to grant the permission. */ public void grantRuntimePermissionAsUser(String packageName, String permission, UserHandle userHandle) { synchronized (mLock) { throwIfNotConnectedLocked(); } Loading @@ -903,25 +923,42 @@ public final class UiAutomation { // Calling out without a lock held. mUiAutomationConnection.grantRuntimePermission(packageName, permission, userHandle.getIdentifier()); // TODO: The package manager API should return boolean. return true; } catch (RemoteException re) { Log.e(LOG_TAG, "Error granting runtime permission", re); } catch (Exception e) { throw new SecurityException("Error granting runtime permission", e); } return false; } /** * Revokes a runtime permission from a package for a user. * @param packageName The package from which to revoke. * @param permission The permission to revoke. * @return Whether revoking succeeded. * * Revokes a runtime permission from a package. * @param packageName The package to which to grant. * @param permission The permission to grant. * @throws SecurityException if unable to revoke the permission. */ public void revokeRuntimePermission(String packageName, String permission) { revokeRuntimePermissionAsUser(packageName, permission, android.os.Process.myUserHandle()); } /** * @deprecated replaced by * {@link #revokeRuntimePermissionAsUser(String, String, UserHandle)}. * @hide */ @Deprecated @TestApi public boolean revokeRuntimePermission(String packageName, String permission, UserHandle userHandle) { revokeRuntimePermissionAsUser(packageName, permission, userHandle); return true; } /** * Revokes a runtime permission from a package. * @param packageName The package to which to grant. * @param permission The permission to grant. * @throws SecurityException if unable to revoke the permission. */ public void revokeRuntimePermissionAsUser(String packageName, String permission, UserHandle userHandle) { synchronized (mLock) { throwIfNotConnectedLocked(); } Loading @@ -932,12 +969,9 @@ public final class UiAutomation { // Calling out without a lock held. mUiAutomationConnection.revokeRuntimePermission(packageName, permission, userHandle.getIdentifier()); // TODO: The package manager API should return boolean. return true; } catch (RemoteException re) { Log.e(LOG_TAG, "Error revoking runtime permission", re); } catch (Exception e) { throw new SecurityException("Error granting runtime permission", e); } return false; } /** Loading @@ -956,6 +990,7 @@ public final class UiAutomation { synchronized (mLock) { throwIfNotConnectedLocked(); } warnIfBetterCommand(command); ParcelFileDescriptor source = null; ParcelFileDescriptor sink = null; Loading Loading @@ -998,6 +1033,7 @@ public final class UiAutomation { synchronized (mLock) { throwIfNotConnectedLocked(); } warnIfBetterCommand(command); ParcelFileDescriptor source_read = null; ParcelFileDescriptor sink_read = null; Loading Loading @@ -1063,6 +1099,16 @@ public final class UiAutomation { } } private void warnIfBetterCommand(String cmd) { if (cmd.startsWith("pm grant ")) { Log.w(LOG_TAG, "UiAutomation.grantRuntimePermission() " + "is more robust and should be used instead of 'pm grant'"); } else if (cmd.startsWith("pm revoke ")) { Log.w(LOG_TAG, "UiAutomation.revokeRuntimePermission() " + "is more robust and should be used instead of 'pm revoke'"); } } private class IAccessibilityServiceClientImpl extends IAccessibilityServiceClientWrapper { public IAccessibilityServiceClientImpl(Looper looper) { Loading core/res/AndroidManifest.xml +2 −2 Original line number Diff line number Diff line Loading @@ -2016,11 +2016,11 @@ <permission android:name="android.permission.REMOVE_TASKS" android:protectionLevel="signature" /> <!-- @SystemApi @hide Allows an application to create/manage/remove stacks --> <!-- @SystemApi @TestApi @hide Allows an application to create/manage/remove stacks --> <permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" android:protectionLevel="signature|privileged|development" /> <!-- @SystemApi @hide Allows an application to embed other activities --> <!-- @SystemApi @TestApi @hide Allows an application to embed other activities --> <permission android:name="android.permission.ACTIVITY_EMBEDDING" android:protectionLevel="signature|privileged|development" /> Loading Loading
api/current.txt +4 −0 Original line number Diff line number Diff line Loading @@ -6115,8 +6115,12 @@ package android.app { method public android.view.WindowAnimationFrameStats getWindowAnimationFrameStats(); method public android.view.WindowContentFrameStats getWindowContentFrameStats(int); method public java.util.List<android.view.accessibility.AccessibilityWindowInfo> getWindows(); method public void grantRuntimePermission(java.lang.String, java.lang.String); method public void grantRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle); method public boolean injectInputEvent(android.view.InputEvent, boolean); method public boolean performGlobalAction(int); method public void revokeRuntimePermission(java.lang.String, java.lang.String); method public void revokeRuntimePermissionAsUser(java.lang.String, java.lang.String, android.os.UserHandle); method public void setOnAccessibilityEventListener(android.app.UiAutomation.OnAccessibilityEventListener); method public boolean setRotation(int); method public void setRunAsMonkey(boolean);
api/test-current.txt +4 −2 Original line number Diff line number Diff line package android { public static final class Manifest.permission { field public static final java.lang.String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING"; field public static final java.lang.String BRIGHTNESS_SLIDER_USAGE = "android.permission.BRIGHTNESS_SLIDER_USAGE"; field public static final java.lang.String CONFIGURE_DISPLAY_BRIGHTNESS = "android.permission.CONFIGURE_DISPLAY_BRIGHTNESS"; field public static final java.lang.String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS"; } } Loading Loading @@ -127,8 +129,8 @@ package android.app { public final class UiAutomation { method public void destroy(); method public android.os.ParcelFileDescriptor[] executeShellCommandRw(java.lang.String); method public boolean grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public boolean revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public deprecated boolean grantRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); method public deprecated boolean revokeRuntimePermission(java.lang.String, java.lang.String, android.os.UserHandle); } public class UiModeManager { Loading
core/java/android/app/UiAutomation.java +64 −18 Original line number Diff line number Diff line Loading @@ -883,16 +883,36 @@ public final class UiAutomation { } /** * Grants a runtime permission to a package for a user. * Grants a runtime permission to a package. * @param packageName The package to which to grant. * @param permission The permission to grant. * @return Whether granting succeeded. * * @throws SecurityException if unable to grant the permission. */ public void grantRuntimePermission(String packageName, String permission) { grantRuntimePermissionAsUser(packageName, permission, android.os.Process.myUserHandle()); } /** * @deprecated replaced by * {@link #grantRuntimePermissionAsUser(String, String, UserHandle)}. * @hide */ @Deprecated @TestApi public boolean grantRuntimePermission(String packageName, String permission, UserHandle userHandle) { grantRuntimePermissionAsUser(packageName, permission, userHandle); return true; } /** * Grants a runtime permission to a package for a user. * @param packageName The package to which to grant. * @param permission The permission to grant. * @throws SecurityException if unable to grant the permission. */ public void grantRuntimePermissionAsUser(String packageName, String permission, UserHandle userHandle) { synchronized (mLock) { throwIfNotConnectedLocked(); } Loading @@ -903,25 +923,42 @@ public final class UiAutomation { // Calling out without a lock held. mUiAutomationConnection.grantRuntimePermission(packageName, permission, userHandle.getIdentifier()); // TODO: The package manager API should return boolean. return true; } catch (RemoteException re) { Log.e(LOG_TAG, "Error granting runtime permission", re); } catch (Exception e) { throw new SecurityException("Error granting runtime permission", e); } return false; } /** * Revokes a runtime permission from a package for a user. * @param packageName The package from which to revoke. * @param permission The permission to revoke. * @return Whether revoking succeeded. * * Revokes a runtime permission from a package. * @param packageName The package to which to grant. * @param permission The permission to grant. * @throws SecurityException if unable to revoke the permission. */ public void revokeRuntimePermission(String packageName, String permission) { revokeRuntimePermissionAsUser(packageName, permission, android.os.Process.myUserHandle()); } /** * @deprecated replaced by * {@link #revokeRuntimePermissionAsUser(String, String, UserHandle)}. * @hide */ @Deprecated @TestApi public boolean revokeRuntimePermission(String packageName, String permission, UserHandle userHandle) { revokeRuntimePermissionAsUser(packageName, permission, userHandle); return true; } /** * Revokes a runtime permission from a package. * @param packageName The package to which to grant. * @param permission The permission to grant. * @throws SecurityException if unable to revoke the permission. */ public void revokeRuntimePermissionAsUser(String packageName, String permission, UserHandle userHandle) { synchronized (mLock) { throwIfNotConnectedLocked(); } Loading @@ -932,12 +969,9 @@ public final class UiAutomation { // Calling out without a lock held. mUiAutomationConnection.revokeRuntimePermission(packageName, permission, userHandle.getIdentifier()); // TODO: The package manager API should return boolean. return true; } catch (RemoteException re) { Log.e(LOG_TAG, "Error revoking runtime permission", re); } catch (Exception e) { throw new SecurityException("Error granting runtime permission", e); } return false; } /** Loading @@ -956,6 +990,7 @@ public final class UiAutomation { synchronized (mLock) { throwIfNotConnectedLocked(); } warnIfBetterCommand(command); ParcelFileDescriptor source = null; ParcelFileDescriptor sink = null; Loading Loading @@ -998,6 +1033,7 @@ public final class UiAutomation { synchronized (mLock) { throwIfNotConnectedLocked(); } warnIfBetterCommand(command); ParcelFileDescriptor source_read = null; ParcelFileDescriptor sink_read = null; Loading Loading @@ -1063,6 +1099,16 @@ public final class UiAutomation { } } private void warnIfBetterCommand(String cmd) { if (cmd.startsWith("pm grant ")) { Log.w(LOG_TAG, "UiAutomation.grantRuntimePermission() " + "is more robust and should be used instead of 'pm grant'"); } else if (cmd.startsWith("pm revoke ")) { Log.w(LOG_TAG, "UiAutomation.revokeRuntimePermission() " + "is more robust and should be used instead of 'pm revoke'"); } } private class IAccessibilityServiceClientImpl extends IAccessibilityServiceClientWrapper { public IAccessibilityServiceClientImpl(Looper looper) { Loading
core/res/AndroidManifest.xml +2 −2 Original line number Diff line number Diff line Loading @@ -2016,11 +2016,11 @@ <permission android:name="android.permission.REMOVE_TASKS" android:protectionLevel="signature" /> <!-- @SystemApi @hide Allows an application to create/manage/remove stacks --> <!-- @SystemApi @TestApi @hide Allows an application to create/manage/remove stacks --> <permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" android:protectionLevel="signature|privileged|development" /> <!-- @SystemApi @hide Allows an application to embed other activities --> <!-- @SystemApi @TestApi @hide Allows an application to embed other activities --> <permission android:name="android.permission.ACTIVITY_EMBEDDING" android:protectionLevel="signature|privileged|development" /> Loading