AppCard 만들기

AppCard를 만들려면 앱이 매니페스트에서 AppCardContentProvider를 확장하는 제공자를 만들어야 합니다. AppCardContentProvider는 기본 세부정보를 추상화하여 AppCard 생성을 용이하게 합니다.

매니페스트 선언

AppCard를 만들려면 앱이 매니페스트에서 제공자를 만들어 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>

패키지당 하나의 제공자만 정의할 수 있으며 다음 속성을 사용합니다.

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

    또는

    • android:readPermission="@string/host_permission"

      그리고

      android:writePermission="@string/host_permission"

  • @string/host_permission는 AppCard 라이브러리에 있으며 시스템의 Android API 버전에 따라 권한을 정의합니다.

    문자열 리소스 사용은 Gradle로 빌드할 때만 작동합니다. Soong을 사용하는 경우 적절한 리소스 한정자에 따라 문자열 리소스 값으로 명시적 문자열을 지정합니다.

  • (기본값) android:grantUriPermissions="false"

  • (기본값) android:forceUriPermissions="false"

    예기치 않은 결과를 방지하려면 공급자가 android:authorities하나의 권한을 정의해야 합니다.

  • 작업 기반 인텐트 필터 com.android.car.appcard.APP_CARD_PROVIDER 선언

AppCardContentProvider 확장

이 섹션에서는 overrideprotected 최종 메서드를 설명합니다.

메서드 재정의

val authority: String
이 메서드를 사용하여 android:authorities 매니페스트 속성에 정의된 기관을 반환합니다.

fun onCreate(): Boolean
이 메서드는 super.onCreate()를 호출해야 합니다. 이 메서드를 사용하여 AppCard가 요청될 때 설정하면 지연을 일으킬 수 있는 기능을 설정하세요.

val appCardIds: List
지원되는 AppCard ID 목록을 반환하려면 이 메서드를 사용하세요. 이 문자열은 오류를 로깅하는 데 사용되므로 각 ID를 자세히 작성하는 것이 좋습니다.

fun onAppCardAdded(String, AppCardContext): AppCard
이 메서드는 AppCard가 처음 표시될 때 호출되며 AppCard와 관련된 ID와 AppCard가 표시되는 방식에 관한 힌트를 제공하는 AppCardContext을 제공합니다.

이 메서드를 사용하여 제공자로 지원되는 AppCards에 필요한 기능을 설정합니다. 이 함수가 호출되면 지정된 ID에 해당하는 AppCard가 활성으로 간주됩니다.

fun onAppCardRemoved(String)
이 메서드는 사용자에게 표시되는 AppCard 인스턴스가 남아 있지 않을 때 호출되며 모든 정리 작업을 처리합니다. 이 함수가 호출되면 지정된 ID에 해당하는 AppCard가 비활성으로 간주됩니다.

fun onAppCardContextChanged(String, AppCardContext)
이 메서드는 시스템에서 AppCard가 표시되는 방식을 업데이트하고 업데이트된 AppCardContext를 전송할 때 호출됩니다.

보호된 최종 메서드

fun sendAppCardUpdate(AppCard)
이 메서드를 호출하여 활성 AppCard의 업데이트를 대기열에 추가합니다.

fun sendAppCardComponentUpdate(String, Component)
이 메서드를 호출하여 활성 AppCard의 구성요소 업데이트를 대기열에 추가합니다. 지정된 구성요소에 EnforceFastUpdateRate가 태그된 경우 업데이트가 즉시 전송됩니다.

FAQ

샘플 구현은 어디에 있나요?