diff options
| -rw-r--r-- | services/usb/java/com/android/server/usb/UsbSettingsManager.java | 9 |
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()); |