From 4751880a4d770e8916320b5908b58f389d6552de Mon Sep 17 00:00:00 2001 From: Daichi Hirono Date: Tue, 8 Dec 2015 09:51:19 +0900 Subject: [PATCH] Grant USB device permission by using system permission. Previously it skips the device permission check by referring package name. The CL removes the special case and use general MANAGE_USB system-only permission to skip USB device permission dialog. BUG=26048722 Change-Id: I3702393a50696209499d1e5f6549dab9fb2cefe4 --- core/java/android/hardware/usb/UsbManager.java | 16 ++++++++++++++++ packages/MtpDocumentsProvider/Android.mk | 1 + .../MtpDocumentsProvider/AndroidManifest.xml | 1 + .../src/com/android/mtp/MtpManager.java | 8 ++++---- .../android/server/usb/UsbSettingsManager.java | 11 +---------- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/core/java/android/hardware/usb/UsbManager.java b/core/java/android/hardware/usb/UsbManager.java index a23a6cbe71fed..1e3bcd0fc796a 100644 --- a/core/java/android/hardware/usb/UsbManager.java +++ b/core/java/android/hardware/usb/UsbManager.java @@ -23,6 +23,7 @@ import android.app.PendingIntent; import android.content.Context; import android.os.Bundle; import android.os.ParcelFileDescriptor; +import android.os.Process; import android.os.RemoteException; import android.util.Log; @@ -454,6 +455,21 @@ public class UsbManager { } } + /** + * Grants permission for USB device without showing system dialog. + * Only system components can call this function. + * @param device to request permissions for + * + * {@hide} + */ + public void grantPermission(UsbDevice device) { + try { + mService.grantDevicePermission(device, Process.myUid()); + } catch (RemoteException e) { + Log.e(TAG, "RemoteException in grantPermission", e); + } + } + /** * Returns true if the specified USB function is currently enabled when in device mode. *

diff --git a/packages/MtpDocumentsProvider/Android.mk b/packages/MtpDocumentsProvider/Android.mk index ec18463c71631..3c2fa36bde40c 100644 --- a/packages/MtpDocumentsProvider/Android.mk +++ b/packages/MtpDocumentsProvider/Android.mk @@ -5,6 +5,7 @@ LOCAL_MODULE_TAGS := optional LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_PACKAGE_NAME := MtpDocumentsProvider LOCAL_CERTIFICATE := media +LOCAL_PRIVILEGED_MODULE := true include $(BUILD_PACKAGE) include $(LOCAL_PATH)/tests/Android.mk diff --git a/packages/MtpDocumentsProvider/AndroidManifest.xml b/packages/MtpDocumentsProvider/AndroidManifest.xml index 3861d7880ac94..d6042a19377ab 100644 --- a/packages/MtpDocumentsProvider/AndroidManifest.xml +++ b/packages/MtpDocumentsProvider/AndroidManifest.xml @@ -3,6 +3,7 @@ package="com.android.mtp" android:sharedUserId="android.media"> +