Fix permission check in car-usb-handler
resolvePackageName can be null, we should use
activityInfo.packageName instead to check for permission
Bug: 128536864
Test: manually using projection receiver app
Change-Id: I0079189b95483d01011e1d3a48a3ce3d44ac1299
diff --git a/car-lib/src/android/car/AoapService.java b/car-lib/src/android/car/AoapService.java
index 20b7fa7..0637e75 100644
--- a/car-lib/src/android/car/AoapService.java
+++ b/car-lib/src/android/car/AoapService.java
@@ -45,7 +45,7 @@
* following permission: {@code android.car.permission.CAR_HANDLE_USB_AOAP_DEVICE}.
*
* <p>This service gets bound by the framework and the service needs to be protected by
- * {@code android.car.permission.CAR_HANDLE_USB_AOAP_DEVICE} permission to ensure nobody else can
+ * {@code android.permission.MANAGE_USB} permission to ensure nobody else can
* bind to the service. At most only one client should be bound at a time.
*
* @hide
diff --git a/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java b/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
index 96f12cf..922afa6 100644
--- a/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
+++ b/car-usb-handler/src/android/car/usb/handler/UsbDeviceHandlerResolver.java
@@ -222,8 +222,9 @@
List<ResolveInfo> resolveInfos =
mPackageManager.queryIntentActivities(intent, PackageManager.GET_META_DATA);
for (ResolveInfo resolveInfo : resolveInfos) {
- if (forAoap && !hasAoapPermission(resolveInfo.resolvePackageName)) {
- Log.w(TAG, "Package " + resolveInfo.resolvePackageName + " does not hold "
+ final String packageName = resolveInfo.activityInfo.packageName;
+ if (forAoap && !hasAoapPermission(packageName)) {
+ Log.w(TAG, "Package " + packageName + " does not hold "
+ AOAP_HANDLE_PERMISSION + " permission. Ignore the package.");
continue;
}