Android Automotive 自定义权限

虽然使用这个方法可以自定义 Vehicle Property,也可以在模拟器中读取和设置属性。但是当我们在应用层调用 CarPropertyManagergetIntPropertysetIntProperty 方法时还是会抛出 property id 不存在的异常。

这篇文章将详细讲述如何在 CarService 层添加自定义权限。

本文基于 AOSP android13-release 分支代码进行修改。

第一步 添加自定义权限的定义

  • packages/services/Car/car-lib/src/android/car/Car.java
diff --git a/car-lib/src/android/car/Car.java b/car-lib/src/android/car/Car.java
index 12955ee..c094d54 100644
--- a/car-lib/src/android/car/Car.java
+++ b/car-lib/src/android/car/Car.java
@@ -1139,6 +1139,13 @@ public final class Car {
    public static final String PERMISSION_MANAGE_THREAD_PRIORITY = "android.car.permission.MANAGE_THREAD_PRIORITY";  
+    /**
+     * Custom Permission.
+     * @hide
+     */
+    @AddedInOrBefore(majorVersion = 33)
+    public static final String PERMISSION_CAR_CUSTOM =
+    "android.car.permission.CAR_CUSTOM";

第二步 为添加的自定义属性添加读写权限

  • packages/services/Car/car-lib/src/android/car/VehiclePropertyIds.java
diff --git a/car-lib/src/android/car/VehiclePropertyIds.java b/car-lib/src/android/car/VehiclePropertyIds.java
index 1531ff1..f8966f5 100644
--- a/car-lib/src/android/car/VehiclePropertyIds.java
+++ b/car-lib/src/android/car/VehiclePropertyIds.java
@@ -2229,6 +2229,15 @@ public final class VehiclePropertyIds {
    @AddedInOrBefore(majorVersion = 33)
    public static final int VEHICLE_CURB_WEIGHT = 289410886;  
    
+    @RequiresPermission(Car.PERMISSION_CAR_CUSTOM)
+    @AddedInOrBefore(majorVersion = 33)
     public static final int VEHICLE_TEST_PROPERTY = 289410896; 
  • packages/services/Car/car-lib/src/com/android/car/internal/PropertyPermissionMapping.java
@@ -34,6 +34,9 @@ public final class PropertyPermissionMapping {
    public PropertyPermissionMapping() {
        // Add propertyId and read/write permissions
        // Cabin Properties
+       map(Car.PERMISSION_CAR_CUSTOM, VehiclePropertyIds.VEHICLE_TEST_PROPERTY);  
  • packages/services/Car/service/src/com/android/car/hal/PropertyHalServiceIds.java
--- a/service/src/com/android/car/hal/PropertyHalServiceIds.java
+++ b/service/src/com/android/car/hal/PropertyHalServiceIds.java
@@ -184,6 +184,12 @@ public class PropertyHalServiceIds {
        mPropToValidBitFlag = new HashMap<>();         
        // Add propertyId a

猜你喜欢

转载自blog.csdn.net/m0_70748458/article/details/130580652