Пользовательские вкладки для необработанных ссылок приложений
Я реализовал applink для обработки всех URL из моего домена следующим образом
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="www.example.com"
android:scheme="http" />
</intent-filter>
но я хотел бы открыть некоторые ссылки из того же домена в пользовательских таблицах. Я реализую эту логику для вызова этих ссылок в пользовательских таблицах
CustomTabsServiceConnection connection = new CustomTabsServiceConnection() {
@Override
public void onCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient client) {
client.warmup(0L);
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder();
builder.setInstantAppsEnabled(false);
builder.setToolbarColor(context.getResources().getColor(R.color.pure_white));
builder.setSecondaryToolbarColor(context.getResources().getColor(R.color.pure_white));
builder.setShowTitle(true);
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.launchUrl(context,Uri.parse("http://www.example.com/unhandled"));
}
@Override
public void onServiceDisconnected(ComponentName name) {}
};
CustomTabsClient.bindCustomTabsService(context, "com.android.chrome", connection);
но эти ссылки были захвачены моим намерением applink, и это продолжается в цикле. Что я пропускаю? Любые идеи или предложения будут полезны.
1 ответ
Решение
Установка пакета в Intent, который запускает Custom Tabs, должна заставить его открывать Chrome.
CustomTabsIntent customTabsIntent = builder.build();
customTabsIntent.intent.setPackage("com.android.chrome");
customTabsIntent.launchUrl(
context,Uri.parse("http://www.example.com/unhandled"));
Кроме того, поскольку Chrome - не единственный браузер, поддерживающий пользовательские вкладки, я рекомендую следовать рекомендациям и поддерживать другие браузеры.