Automotive 添加一个特权APP

news2024/11/29 5:37:53

Automotive 添加一个特权APP

platform: android-13.0.0_r32

一. 添加一个自定义空调的app为例

路径:packages/apps/Car/MyHvac

app内容可以自己定义,目录结构如下:
在这里插入图片描述

1.1 Android.bp
package {
    default_applicable_licenses: ["Android-Apache-2.0"],
}

android_app {
	# app的名字
    name: "MyHvac",
    # 源码
    srcs: ["src/**/*.java"],
    # 资源
    resource_dirs: ["res"],
    platform_apis: true,
    # platform 签名
    certificate: "platform",
    # 是否是特权app
    privileged: true,
    # 依赖 car-lib
    libs: ["android.car-system-stubs"],  
    # 这是app的常用依赖
    static_libs: [
        "jsr305",
        "androidx.legacy_legacy-support-v4",
        "androidx.appcompat_appcompat",
        "androidx-constraintlayout_constraintlayout",
        "androidx.lifecycle_lifecycle-extensions",
        "car-apps-common",

    ],
    optimize: {
        enabled: false,
    },
    dex_preopt: {
        enabled: false,
    },
    product_variables: {
        pdk: {
            enabled: false,
        },
    },
	# 这里就是请求特权的模块信息了
    required: ["allowed_privapp_com.jiangc.myhvac"]
}
1.2 权限申请

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.jiangc.myhvac">

    <uses-sdk
        android:minSdkVersion="22"
        android:targetSdkVersion="31"/>
	
    <uses-permission android:name="android.car.permission.CONTROL_CAR_CLIMATE" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <!-- Required to use the TYPE_DISPLAY_OVERLAY layout param for the overlay hvac ui-->
    <uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
    <!-- Allow Hvac to go across all users-->
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />

    <protected-broadcast android:name="android.car.intent.action.TOGGLE_HVAC_CONTROLS" />
    <uses-feature
        android:name="android.hardware.type.automotive"
        android:required="true" />

    <application
        android:allowBackup="true"
        android:appCategory="audio"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.MyHvac">
        <activity
            android:name=".MainActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

其中INTERACT_ACROSS_USERS、CONTROL_CAR_CLIMATE为特殊权限

二. 添加特权配置

路径:packages/services/Car/data/etc/

以包名创建一个xml文件,比如本例中的com.jiangc.myhvac.xml

内容如下:将特殊权限放到这里

<permissions>
    <privapp-permissions package="com.jiangc.myhvac">
        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
        <permission name="android.car.permission.CONTROL_CAR_CLIMATE"/>
    </privapp-permissions>
</permissions>

然后在Android.bp中添加一个模块

prebuilt_etc {
	# 模块名,和前面Android.bp中匹配
    name: "allowed_privapp_com.jiangc.myhvac",
    sub_dir: "permissions",
    # 这里是我们上面添加的特权文件名
    src: "com.jiangc.myhvac.xml",
    filename_from_src: true,
}

接下来修改packages/services/Car/car_product/overlay/frameworks/base/core/res/res/values/policy_exempt_apps.xml

添加应用的包名

<resources>
    <!--
    A collection of apps that are critical for the device and hence will never be disabled by
    device policies or APIs.
    -->
    <string-array translatable="false" name="policy_exempt_apps">
        <item>com.android.car.cluster.home</item>
        <item>com.android.car.hvac</item>
        <item>com.android.car.media</item>
        <item>com.android.car.radio</item>
        <item>com.jiangc.myhvac</item>
    </string-array>
</resources>

然后make

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/975584.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件生命周期及流程

软件生命周期&#xff1a; 软件生命周期(SDLC&#xff0c;Systems Development Life Cycle)是软件开始研制到最终被废弃不用所经历的各个阶段. 需求分析阶段--输出需求规格说明书&#xff08;原型图&#xff09; 测试介入的晚--回溯成本高 敏捷开发模型&#xff1a; 从1990年…

一文读懂|内核顺序锁

Linux 内核有非常多的锁机制&#xff0c;如&#xff1a;自旋锁、读写锁、信号量和 RCU 锁等。本文介绍一种和读写锁比较相似的锁机制&#xff1a;顺序锁&#xff08;seqlock&#xff09;。 顺序锁与读写锁一样&#xff0c;都是针对多读少写且快速处理的锁机制。而顺序锁和读写…

【SQL学习笔记】关系模型与查询和更新数据

一、关系模型 1.1 主键 主键是关系表中记录的唯一标识。主键的选取非常重要&#xff1a;主键不要带有业务含义&#xff0c;而应该使用BIGINT自增或者GUID类型。主键也不应该允许NULL。 可以使用多个列作为联合主键&#xff0c;但联合主键并不常用。 1.2 外键 FOREIGN KEY …

WEB APIs day6

一、正则表达式 RegExp是正则表达式的意思 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…

异步驱动电机总成汇总

特斯拉双电机 蔚来ET7异步电驱 蔚来ET5异步电驱 问界M5异步电驱 比亚迪海豹异步异步电驱 汇川800v异步电驱 阿维塔异步电驱 小鹏G6异步电驱 小鹏G9异步电驱 大众ID4异步电驱 奥迪etron异步电驱 欢迎补充&#xff5e;&#xff5e;&#xff5e;欢迎转载&#xff01;&#xff01;&…

适合心理法律在线咨询预约含视频图文电话咨询功能的小程序开发

目前智能手机普及&#xff0c;很多以前需要线下咨询的场景都被搬到了线上&#xff0c;这样既可以使咨询者更方便&#xff0c;也可以使被咨询者接待效率更高&#xff0c;服务更多咨询者。基于此我们开发了专门的一款具有线上咨询功能的小程序&#xff0c;同时为了方便被咨询者服…

算法笔记:点四叉树

点四叉树是一种用于主要是针对空间点存储与索引的树形数据结构在点四叉树中&#xff0c;空间被分割成四个矩形&#xff0c;四个不同的多边形对应于SW、NW、SE、NE四个象限 1 基本操作 1.1 初始化 创建一个根节点&#xff0c;该节点代表整个二维空间区域 1.2 插入点 当一个新…

深入理解 JVM 之——垃圾回收与内存分配策略

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 垃圾回收策略 说起垃圾收集&#xff08;Garbage Collection&#xff0c;下文简称GC&#xff09;&#xff0c;有不少人把这项技术当作Java语言的伴生产物。事实上&#xff0c;垃圾收集的历史远远比Java久远&…

【力扣周赛】第 360 场周赛(贪心 ⭐树上倍增)

文章目录 竞赛链接Q1&#xff1a;8015. 距离原点最远的点&#xff08;贪心&#xff09;Q2&#xff1a;8022. 找出美丽数组的最小和&#xff08;贪心&#xff09;Q3&#xff1a;2835. 使子序列的和等于目标的最少操作次数&#xff08;贪心&#xff09;思路竞赛时丑陋代码&#x…

SquirrelMail实现Web方式收发邮件_xionglling的博客-CSDN博客

SquirrelMail实现Web方式收发邮件_xionglling的博客-CSDN博客小松鼠实现Web邮件服务SquirrelMail 是一个用PHP开发的Web邮件系统。它内置纯PHP支持的IMAP和SMTP协议&#xff0c;所有页面都遵循 HTML 4.0标准(没有使用任何 JavaScript 代码)&#xff0c;以便最大限度兼容各种多浏…

java对象的组成部分

在 HotSpot 虚拟机里&#xff0c;对象在堆内存中的存储布局可以划分为三个部分&#xff1a;对象头&#xff08;Header&#xff09;、实例数据&#xff08;Instance Data&#xff09;和对齐填充&#xff08;Padding&#xff09; 对象头主要由两部分组成&#xff1a; 第一部分存…

详细介绍 display: block(块级元素)、inline-block(行内块元素)和inline(行内元素)的差别

html元素的类型主要可分为块级元素、行内元素、行内块元素分别对应的各自的display属性&#xff0c;block、inline、inline-block html的标签都被默认设置了对应的display属性值&#xff0c;例如 块级元素&#xff1a;默认设置display:block的元素 <div>、<h1>~…

无涯教程-JavaScript - NETWORKDAYS函数

描述 NETWORKDAYS函数返回start_date和end_date之间的整个工作日数。工作日不包括周末和节假日中确定的任何日期。 语法 NETWORKDAYS (start_date, end_date, [holidays])争论 Argument描述Required/OptionalStart_dateA date that represents the start date.RequiredEnd_…

软件游戏丢失d3dcompiler_47.dll怎么办?这个几个解决方法可修复

当我们在玩软件游戏时&#xff0c;有时候会出现丢失 d3dcompiler_47.dll 的问题&#xff0c;这让我们感到非常困扰。d3dcompiler_47.dll 是 DirectX 中的一个重要组件&#xff0c;如果它丢失了&#xff0c;那么很多游戏就无法正常运行。我将和大家分享一下我在解决软件游戏丢失…

美妆+七人拼团模式:如何打造新型社交电商营销方式

美妆是一个充满竞争和创新的行业&#xff0c;要想在市场上获得优势&#xff0c;就需要不断寻找新的营销方式&#xff0c;吸引和留住消费者。七人拼团模式就是一种结合了社交电商和拼购玩法的新型商业模式&#xff0c;它可以利用社交网络的裂变效应&#xff0c;增加品牌曝光度和…

我国元宇宙相关专利数居世界第二,中创元宇宙发展取得阶段性进步!

元宇宙是工业和互联网的下一次大变革方向&#xff0c;将划分出一个时代 9月2日&#xff0c;2023年中国国际服务贸易交易会&#xff08;以下简称“服贸会”&#xff09; 在京召开。 在同期举行的数字贸易发展趋势和前沿高峰论坛上&#xff0c;我国元宇宙产业生态在各方的支持下…

2.IDE的优化与插件

文章目录 后端IDEA配置maven配置git配置名字插件安装参考资料 前端vs codeopenssh远程环境开发 后端IDEA 配置maven 参考&#xff1a;https://blog.csdn.net/weixin_44458365/article/details/118416385 -DarchetypeCataloginternal注意&#xff1a;一旦勾选下面的选项&…

SIP mini对讲 SV-10/SV-10W 86型sip对讲终端

SIP mini对讲 SV-10/SV-10W 86型sip对讲终端 A10系列是专门针对室内用户需求研发的一款SIP mini 对讲产品&#xff0c;集智能安防、音频对讲和广播功能于一体&#xff0c;功能强大&#xff0c;性价比高。它外观小巧&#xff0c;支持按键图标/功能自定义&#xff0c;配备3个可编…

Git常用命令用法

参考视频&#xff1a;真的是全能保姆 git、github 保姆级教程入门&#xff0c;工作和协作必备技术&#xff0c;github提交pr - pull request_哔哩哔哩_bilibili 1.Git初始化 首先设置名称和邮箱。然后初始化一下&#xff0c;然后就创建了一个空的Git仓库。 PS D:\golang\oth…

手机word怎么转pdf?这几种方法很简单

手机word怎么转pdf&#xff1f;将word文档转换为PDF文件&#xff0c;在很多场合都非常有用。比如&#xff0c;你可能需要在公司或学校中分享一份重要的文档&#xff0c;或者你想将一份简历或报告以PDF格式发送给招聘人员或老师。无论是哪种情况&#xff0c;将word文档转换为PDF…