如何在Android Auto应用中添加ListView实现联系人列表功能
实现可行性说明
这个需求完全可以实现,Android Auto 提供了官方封装好的 UI 模板与内容展示 API,不需要自行实现 ListView 等原生视图组件,按官方规范开发即可同时满足界面展示需求和驾驶安全合规要求。
核心实现步骤
- 首先在模块级
build.gradle中引入 Car App Library 依赖,选稳定版即可避免兼容性问题:
dependencies { implementation "androidx.car.app:app:1.4.0" }
- 联系人列表直接用官方提供的
ListTemplate实现即可,你不需要手动编写 ListView、RecyclerView 相关代码,列表的渲染、交互适配、驾驶场景下的限制都会由库自动处理。 - 每个联系人项用
Row实例构建,支持配置名称、头像、点击事件等属性,代码示例如下:
// 从本地读取的联系人数据列表 val contactList: List<Contact> = getSystemContacts() // 构建列表项 val itemList = contactList.map { contact -> Row.Builder() .setTitle(contact.name) .addText(contact.phoneNumber) .setImage( CarIcon.Builder(IconCompat.createWithBitmap(contact.avatar)).build(), Row.IMAGE_TYPE_AVATAR ) .setOnClickListener { // 自定义点击逻辑,比如跳转拨号页、打开联系人详情 } .build() } // 组装联系人列表模板 val contactListTemplate = ListTemplate.Builder() .setTitle("我的联系人") .setItems(itemList) .build()
- 如果需要按首字母分组展示联系人,替换使用
SectionedListTemplate,给不同分组设置对应表头和子项列表即可。
注意事项
- 不要尝试在 Android Auto 中嵌入原生 ListView、RecyclerView 等自定义视图,这类实现不符合驾驶安全规范,提交 Google Play 审核会直接被驳回,所有界面必须使用 Car App Library 提供的官方模板构建。
- 读取系统联系人需要提前申请
READ_CONTACTS权限,注意适配 Android 13 及以上版本的动态权限申请逻辑。
内容的提问来源于stack exchange,提问作者Amit Yazdan
相关产品推荐
相关产品推荐

