summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--services/usb/java/com/android/server/usb/UsbSettingsManager.java9
1 files changed, 8 insertions, 1 deletions
diff --git a/services/usb/java/com/android/server/usb/UsbSettingsManager.java b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
index 154cbd30d836..4786d11fb4b4 100644
--- a/services/usb/java/com/android/server/usb/UsbSettingsManager.java
+++ b/services/usb/java/com/android/server/usb/UsbSettingsManager.java
@@ -984,7 +984,14 @@ class UsbSettingsManager {
public boolean hasPermission(UsbDevice device) {
synchronized (mLock) {
int uid = Binder.getCallingUid();
- if (uid == Process.SYSTEM_UID || mDisablePermissionDialogs) {
+ int androidMediaUid;
+ try {
+ androidMediaUid = mPackageManager.getApplicationInfo("com.android.mtp", 0).uid;
+ } catch (NameNotFoundException e) {
+ androidMediaUid = -1;
+ }
+ if (uid == Process.SYSTEM_UID || UserHandle.getAppId(uid) == androidMediaUid ||
+ mDisablePermissionDialogs) {
return true;
}
SparseBooleanArray uidList = mDevicePermissionMap.get(device.getDeviceName());