前置き
- Android M以上でブラウザの「優先アプリ」指定をしているとcustom-tabs-client/sharedの CustomTabsHelper.getPackageNameToUse(context) を利用してもChromeが起動しない問題の対応です。
問題
- PackageManager#queryIntentActivities の挙動が変わったため。
対応
- PRが出ているのでそれを取り込みましょう。
- 私は以下のように判定して使っています。
Helperクラス
public static CustomTabsIntent createCustomTabsIntent(Context context) {
String packageName = CustomTabsHelper.getPackageNameToUse(context);
CustomTabsIntent intent = new CustomTabsIntent.Builder()
.setShowTitle(true)
.setToolbarColor(ContextCompat.getColor(context, R.color.white)).build();
if (packageName != null) {
intent.intent.setPackage(packageName);
}
return intent;
}