LoginSignup
36
39

More than 5 years have passed since last update.

【Android】ShareCompatを使って簡単にシェアボタンを実装しよう

Last updated at Posted at 2014-08-11

で、ShareCompatを使ったらどんなことが出来るのかというと以下のスクリーンショット見たいなやつです。

ScreenShot39.png

Google Chromeさんにも共有するボタンがあって、同じような画面が開かれるかと思います。

なので今回はこいつを簡単に実装できるShareCompatを紹介します。

ちなみに今回はSupoprtLibraryを使うので、SupportLibraryを使っていないという猛者はうまく置き換えてみてください。

今回は以下の記事を参考にさせて頂きました。

Android Tips #35 ShareCompat で簡単に共有アクションをつくる

ありがとうございました!

目次

  1. ソースコード
  2. ShareCompatとは
  3. 暗黙的インテントとは
  4. 終わりに

1. ソースコード

早速ソースコードを御覧ください。

Share.java
String articleURL = "記事のURL"
String articleTitle = "記事のタイトル"
String sharedText = articleTitle + " " + articleURL;

// builderの生成 ShareCompat.IntentBuilder.from(Context context);
ShareCompat.IntentBuilder builder = ShareCompat.IntentBuilder.from(this.getActivity());

// アプリ一覧が表示されるDialogのタイトルの設定
builder.setChooserTitle(R.string.menu_article_detail_share_chooser_title);

// シェアするタイトル
builder.setSubject(articleTitle);

// シェアするテキスト
builder.setText(sharedText);

// シェアするタイプ(他にもいっぱいあるよ)
builder.setType("text/plain");

// Shareアプリ一覧のDialogの表示
builder.startChooser();

これを実装したら上のようなスクリーンショットが表示されると思います。

ちなみにTwitterのアプリを選択すると

ScreenShot47.png

こんな感じになります。

では1つずつ噛み砕いて行きたいと思います。

2. ShareCompatとは

AndroidDeveloperのリンクは以下になっています。

ShareCompat | Android Developers

ちなみに今回使ったShareCompat.IntentBuilderはこちらです。

ShareCompat.IntentBuilder | Android Developers

先ほどの文章を引用させて頂きます。

ShareCompat は Activity 間のデータのやりとり (共有) のためのユーティリティクラスです。Support Package に含まれているクラスなので Android 1.6 (APIレベル4) から使用することができます。

Activity 間のデータのやりとりは Intent を使っておこないますが ShareCompat を使うことで ACTION_SEND や ACTION_SEND_MULTIPLE といった共有アクションの暗黙的 Intent をつくったり、逆に共有アクションの詳細な情報を取得するといったことを簡単に実装することができます。

Android4.0以上の場合はShareActionProviderを使うのが妥当らしいです。

が、まだまだAndroidで4.0以上のアプリを作る(正確には日本向けに作る)のはないと思っているので、SuportLibraryでバージョンを気にせず使えるShareCompat.IntentBuilderを使うほうがよろしいかと思います。

3. 暗黙的インテントとは

で、上記の引用部分で出てきました、暗黙的インテントというワードですが、こちらが素敵な仕組みとなっています。

暗黙的Intentとは動作のみを指定して他のアプリケーションを起動します。

起動される側(呼び出される側)のアプリケーションは、反応したいイベントに対して返事をする仕組みとなっています。

暗黙的インテントとは逆に明示的インテントというのがあります。

例えば、ブラウザを起動する際に、ブラウザアプリを明示して起動することも出来ます。

しかし、それだとユーザーさんが好んでいるブラウザが使えなかったりするので、UX的には悪いかと思います。

そこを暗黙的インテントを使えば、ブラウザを開きたいという呼び出しに対して反応したアプリ一覧をユーザーさんに選択させることが出来ます。

使ってみるととっても便利なので、ぜひ使ってください!

4. 終わりに

暗黙的インテントがこんなに強力だと思っていませんでした。

多分これから沢山のことに対して使うことになるだろうなと思っています。

ではお疲れ様でした。

36
39
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
36
39