Android 기기에 맞춤 탭을 지원하는 브라우저가 있는지 확인

다음 섹션에서는 Android 기기의 기본 브라우저 또는 다른 브라우저가 맞춤 탭을 지원하는지 확인하는 방법을 보여줍니다.

기본 브라우저에서 맞춤 탭을 지원하는지 확인

기본 브라우저에서 맞춤 탭을 지원하는지 확인하려면 CustomTabsClientgetPackageName 도우미 메서드를 사용하세요.

String packageName = CustomTabsClient.getPackageName(
        context,
        Collections.emptyList()
);
if (packageName == null) {
    // Custom Tabs are not supported by the default browser
}

기기의 브라우저가 맞춤 탭을 지원하는지 확인

기기에 설치된 브라우저가 맞춤 탭을 지원하는지 확인하려면 VIEW 인텐트를 처리할 수 있는 앱을 쿼리하고 패키지 이름을 추출한 다음 CustomTabsClient에서 getPackageName 도우미 메서드를 사용해야 합니다.

// Get all apps that can handle VIEW intents and Custom Tab service connections.
Intent activityIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.example.com"));
PackageManager packageManager = context.getPackageManager();
List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(activityIntent, PackageManager.MATCH_ALL);

// Extract package names from ResolveInfo objects
List<String> packageNames = new ArrayList<>();
for (ResolveInfo info : resolveInfos) {
    packageNames.add(info.activityInfo.packageName);
}

// Get a package that supports Custom Tabs
String packageName = CustomTabsClient.getPackageName(
        context,
        packageNames,
        true /* ignore default */
);
if (packageName == null) {
    // Custom Tabs are not supported by any browser on the device
}

Android 11 패키지 공개 상태 변경사항

Android 11에서는 패키지 공개 상태 변경사항이 도입되었습니다. Android 앱이 API 수준 30 이상을 타겟팅하는 경우 AndroidManifest.xml의 쿼리 섹션에 다음 선언을 추가해야 합니다.

이 선언이 없으면 queryIntentActivities 메서드가 결과를 반환하지 않습니다.

<queries>
    <intent>
        <action android:name=
            "android.support.customtabs.action.CustomTabsService" />
    </intent>
</queries>

기기의 브라우저에서 맞춤 탭을 지원하지 않음

기기에서 맞춤 탭을 지원하는 브라우저를 사용할 수 없고 customTabsIntent.launchUrl(context, url)를 사용하여 URL을 실행하면 인텐트가 실패하여 ActivityNotFoundException이 발생할 수 있습니다.

항상 호환성 검사를 실행하여 더 나은 사용자 환경을 제공하세요.

사용 가능한 브라우저에서 URL을 열려면 표준 ACTION_VIEW 인텐트로 대체할 수 있습니다.