Tạo AppCard

Để tạo AppCard, ứng dụng phải tạo một trình cung cấp trong tệp kê khai mở rộng AppCardContentProvider. AppCardContentProvider sẽ trừu tượng hoá các thông tin chi tiết cơ bản để tạo điều kiện thuận lợi cho việc tạo AppCard.

Nội dung khai báo trong tệp kê khai

Để tạo AppCard, ứng dụng phải tạo một trình cung cấp trong tệp kê khai để mở rộng AppCardContentProvider.

<provider android:name=".SimpleAppCardContentProvider"
            android:authorities="com.example.appcard.sample.media"
            android:permission="@string/host_permission"
            android:exported="true"
            android:enabled="true">
            <intent-filter>
                <action android:name="com.android.car.appcard.APP_CARD_PROVIDER" />
            </intent-filter>
</provider>

Bạn chỉ có thể xác định một nhà cung cấp cho mỗi gói và có các thuộc tính sau:

  • android:exported="true"
  • android:enabled="true"
  • android:permission="@string/host_permission"

    HOẶC,

    • android:readPermission="@string/host_permission"

      android:writePermission="@string/host_permission"

  • @string/host_permission có trong thư viện AppCard và xác định một quyền tuỳ thuộc vào phiên bản API Android của hệ thống.

    Việc sử dụng tài nguyên chuỗi chỉ hoạt động khi bạn tạo bằng Gradle. Khi sử dụng Soong, hãy chỉ định chuỗi rõ ràng bằng giá trị tài nguyên chuỗi theo trình đủ tiêu chuẩn tài nguyên thích hợp.

  • (mặc định) android:grantUriPermissions="false"

  • (mặc định) android:forceUriPermissions="false"

    Để tránh kết quả không mong muốn, nhà cung cấp phải xác định chỉ một cơ quan duy nhất trong android:authorities.

  • Khai báo bộ lọc ý định dựa trên hành động, com.android.car.appcard.APP_CARD_PROVIDER

Mở rộng AppCardContentProvider

Phần này mô tả các phương thức cuối cùng ghi đèđược bảo vệ.

Phương thức ghi đè

val authority: String
Sử dụng phương thức này để trả về quyền được xác định trong thuộc tính tệp kê khai android:authorities.

fun onCreate(): Boolean
Phương thức này phải gọi super.onCreate(). Sử dụng phương thức này để thiết lập chức năng có thể gây ra độ trễ nếu được thiết lập khi AppCard được yêu cầu.

val appCardIds: List
Sử dụng phương thức này để trả về danh sách mã nhận dạng AppCard được hỗ trợ. Bạn nên đặt mỗi mã nhận dạng ở chế độ chi tiết vì chuỗi này được dùng để ghi lại lỗi.

fun onAppCardAdded(String, AppCardContext): AppCard
Phương thức này được gọi khi AppCard xuất hiện lần đầu tiên và cung cấp mã nhận dạng liên quan đến AppCard cũng như AppCardContext cung cấp gợi ý về cách AppCard xuất hiện.

Sử dụng phương thức này để thiết lập mọi chức năng mà AppCards yêu cầu được hỗ trợ dưới dạng nhà cung cấp. Sau khi hàm này được gọi, AppCard tương ứng với mã nhận dạng đã cho sẽ được coi là đang hoạt động.

fun onAppCardRemoved(String)
Phương thức này được gọi khi không còn phiên bản AppCard nào hiển thị cho người dùng và xử lý mọi hoạt động dọn dẹp. Khi hàm này được gọi, AppCard tương ứng với mã nhận dạng đã cho sẽ được coi là không hoạt động.

fun onAppCardContextChanged(String, AppCardContext)
Phương thức này được gọi khi hệ thống muốn cập nhật cách hiển thị AppCard và gửi một AppCardContext đã cập nhật.

Phương thức cuối cùng được bảo vệ

fun sendAppCardUpdate(AppCard)
Gọi phương thức này để đưa một bản cập nhật vào hàng đợi cho AppCard đang hoạt động.

fun sendAppCardComponentUpdate(String, Component)
Gọi phương thức này để đưa một yêu cầu cập nhật vào hàng đợi cho một thành phần trong AppCard đang hoạt động. Nếu thành phần đã cho được gắn thẻ bằng EnforceFastUpdateRate, thì bản cập nhật sẽ được gửi ngay lập tức.

Câu hỏi thường gặp

Các phương thức triển khai mẫu nằm ở đâu?