スマホでブラウザを起動する, っての最近では面倒.
LINEとかメッセージでリンクを送ってくる人とか.

さりげなく開かずにテキトーな会話を続けたりします.
考えてみると「なんかブラウザって重いしトロい」から.
そこで, 最近登場したのが「Chrome Custom Tabs」というしくみ.
Chrome Custom Tabs - Google Chrome

表示までが非常に高速化されてるようにに見える.
実装しようとサンプルをダウンロードしてみる.
GoogleChrome/custom-tabs-client
アプリ内モジュールやヘルパーやプロセス間の通信など
依存関係があるのでわかりづらい.
とりあえずシンプルにURLを渡すだけでで起動してみたいだけなので以下で.
build.gradle
compile 'com.android.support:customtabs:23.0.1'
サンプル内モジュール customtabs 以下は不要.
コピペするクラス
CustomTabsHelper
KeepAliveService
CustomTabActivityHelper
WebViewFallback
shared というモジュールは作らずベタクラスとしてコピペ.
アプリ内モジュール依存はなしで.
起動
...
Uri uri = Uri.parse("http://google.com/");
CustomTabsIntent customTabsIntent =
new CustomTabsIntent.Builder().build();
CustomTabActivityHelper
.openCustomTab(this, customTabsIntent, uri, new WebViewFallback());
...
UIカスタマイズはしない. するならここで.
WebViewFallback#openUri()
...
//Intent intent = new Intent(activity, WebViewActivity.class);
//intent.putExtra(WebActivity.EXTRA_URL, uri.toString());
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(uri);
activity.startActivity(intent);
...
Chromeアプリ (stable/beta/dev) をインストールしてない場合は,
デフォルトブラウザなどに暗黙的に投げる.
で ?
起動はできる.
が, これだけでは恩恵にありつけない.

サイト内検索などはできるようにはなるが
「なんかブラウザって重いしトロい」が解消せず.
以下の機能があるという.
Pre-warming of the Browser in the background, while avoiding stealing resources from the application.
Providing a likely URL in advance to the browser, which may perform speculative work, speeding up page load time.
これを使わないと意味ないな...
(つづく)