From 244259a063c77029326a4150a9dec232ea80bad4 Mon Sep 17 00:00:00 2001 From: "Johan T. Halseth" Date: Tue, 24 May 2016 14:49:04 +0100 Subject: [PATCH] Adding grantPermission for packageName Adding a hidden API in UsbManager for system services to grant permissions to a specific package for a USB device without showing a user dialog. Bug: 28760255 Change-Id: Ie68cfc784b7894e9db12ab61bab0f7e6bfa369e3 --- .../java/android/hardware/usb/UsbManager.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java index f9a7d192b5bb3..8f21b38ec25f2 100644 --- a/core/java/android/hardware/usb/UsbManager.java +++ b/core/java/android/hardware/usb/UsbManager.java @@ -21,6 +21,7 @@ import com.android.internal.util.Preconditions; import android.app.PendingIntent; import android.content.Context; +import android.content.pm.PackageManager.NameNotFoundException; import android.os.Bundle; import android.os.ParcelFileDescriptor; import android.os.Process; @@ -475,6 +476,26 @@ public class UsbManager { } } + /** + * Grants permission to specified package for USB device without showing system dialog. + * Only system components can call this function, as it requires the MANAGE_USB permission. + * @param device to request permissions for + * @param packageName of package to grant permissions + * + * {@hide} + */ + public void grantPermission(UsbDevice device, String packageName) { + try { + int uid = mContext.getPackageManager() + .getPackageUidAsUser(packageName, mContext.getUserId()); + mService.grantDevicePermission(device, uid); + } catch (NameNotFoundException e) { + Log.e(TAG, "Package " + packageName + " not found.", e); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } + } + /** * Returns true if the specified USB function is currently enabled when in device mode. *