Android Automotive のカスタム権限

この方法を使用して車両プロパティをカスタマイズできますが、シミュレーターでプロパティを読み取って設定することもできます。ただし、アプリケーション層で および メソッドを呼び出すと、プロパティ ID が存在しないというCarPropertyManager例外getIntPropertysetIntPropertyスローされます。

この記事では、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";

2 番目のステップは、追加されたカスタム属性に読み取りおよび書き込み権限を追加することです。

  • 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