fc2ブログ
  • 館内放送 [ツイッター]

    キンコンカンコーン・・・うみゃーだよ。館内放送だみゃ。
    ・・・・・キンコンカンコーン・・・ブツ
  • 町内会からのお知らせ [相互RSS]

【技術部】 [Android] Custom Tabsをカスタマイズして利用してみる。


※カテゴリー【技術部】は技術者向けの記事となります。

Chrome Custom Tabsをカスタマイズして利用してみましょう。


目的
・タイトルバーの色を変える。
・戻るボタンをアイコンを変える。
・URLを共有する機能を追加する。
・Chrome v45以上が利用できない場合、既存のWebViewを使う。



使用するもの
CustomTabsHelper





サンプルソース

public static void Open(String url,Activity activity){

    // ① GoogleChrome v45以上が利用可能か調べる。
    String packageName = CustomTabsHelper.getPackageNameToUse(activity);

    // ② Chrome v45以上が利用できない場合。既存のWebViewを利用する。
    if (packageName == null) {

      Intent intent = new Intent(activity, ItemDetailActivity.class);
      intent.putExtra("URL", url);
      activity.startActivity(intent);

    // Chrome v45以上が利用できる場合。Custom tabsを利用する。
    } else {

      // ③ タイトルバーの色をテーマから取得する。
      TypedValue typedValue = new TypedValue();
      activity.getTheme().resolveAttribute(R.attr.colorPrimary, typedValue, true);

      // ④ URLを共有するメニューアイテムを生成する。
      final Intent intent = new Intent(Intent.ACTION_SEND)
              .setType("text/plain")
             .putExtra(Intent.EXTRA_TEXT, url);
      final PendingIntent pendingIntent = PendingIntent.getActivity(activity, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
      
      // ⑤ 戻るボタンを×から←に変更。
      Bitmap backbutton = BitmapFactory.decodeResource(activity.getResources(), R.drawable.abc_ic_ab_back_mtrl_am_alpha);

      // ⑥ CustomTabsを生成する。
      final CustomTabsIntent tabsIntent = new CustomTabsIntent.Builder()
             .setShowTitle(true)                // タイトルを表示する。
             .setToolbarColor(typedValue.data)  // タイトルカラーを変更する。
             .setCloseButtonIcon(backbutton)    // 戻るアイコンを変更する。
             .addMenuItem("URLを共有する", pendingIntent)  // 共有機能を追加する。
             .build();

      // ⑦ CustomTabsでの実行を明示する。
      tabsIntent.intent.setPackage(packageName);

      // Chromeの起動
      tabsIntent.launchUrl(activity, Uri.parse(strURL));

}

説明

CustomTabsHelperの機能を使ってChrome v45以上が利用可能か調べます。
CustomTabsHelperはここから取得できます。


CustomTabsHelper.getPackageNameToUse(activity)の戻り値がNullの場合、Chrome v45が利用不可能な状態です。


テーマのcolorPrimaryの色情報を取得します。


URLの情報をPendingIntentにセットします。
PendingIntent.getActivityの第三引数はPendingIntent.FLAG_UPDATE_CURRENTを指定しないと、urlが更新されないので注意してください。


←アイコンのBitmapを生成します。


CustomTabsを生成します。

⑦ 【2016/05/21追記】
CustomTabsでの起動を明示する。
端末によってはこれを指定しないとブラウザ選択画面がでてしまう。


出力結果
関連記事
この記事へのリアクション

コメントの投稿

非公開コメント




タグ:技術部AndroidChromeCustomtabs

プロフィール

うみゃー・アパカ

Author:うみゃー・アパカ
UMYA.net公式ブログです。
ツイッター:umya_net


リンクフリーです!
アドレス:http://umyanet.blog.fc2.com/

公式ホームページ

ラインスタンプ配信中!

リンク



スマホアプリ配信中

黄金疾走

スポンサード

人気商品

Powered by amaprop.net