Android4.0(以降ICS)のActionBarには、共有ボタンで共有機能を使用したことのあるアプリのアイコンを、ActionBarのMenuItemに追加することができるようになりました。
詳細は以下から。
共有履歴をActionBarに追加するために今回は以下の流れに沿って解説します。
- 共有履歴を表示するスペースの確保
- ShareActionProviderの設定
まずは共有したアプリのMenuItemを格納するための領域をmenuのレイアウトファイルで確保します。
共有履歴を表示するスペースの確保
action_bar_action_provider.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 | <item android:id= "@+id/menu_item_share_action_provider_action_bar" android:showAsAction= "always" android:title= "@string/action_bar_share_with" android:actionProviderClass= "android.widget.ShareActionProvider" /> <item android:id= "@+id/menu_item_share_action_provider_overflow" android:showAsAction= "never" android:title= "@string/action_bar_share_with" android:actionProviderClass= "android.widget.ShareActionProvider" /> </menu>
|
3〜6行目は最初から表示しておく共有機能のMenuItemです。
8〜11行目が一度使用した共有先アプリを記憶するためのMenuItemです。
ポイントはandroid:actionProviderClass属性にandroid.widget.ShareActionProviderを指定することです。
ShareActionProviderクラスを使用するためにはこの記述が必要です。
ShareActionProviderクラスはICSから追加されたクラスで、MenuItemで共有された各IntentのActionを管理するための機能を提供します。
また、ShareActionProviderクラスはActionごと、データの種類(テキスト、画像等)ごとに作成することができ、それぞれの共有の履歴をActionBarに表示させることが可能です。
ShareActionProviderの設定
次にコードで、ShareActionProviderに共有するIntentのActionの指定、共有アプリの履歴の保存先の指定を行います。
Actionbar.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.action_bar_action_provider, menu); MenuItem actionItem = menu.findItem(R.id.menu_item_share_action_provider_action_bar); ShareActionProvider actionProvider = (ShareActionProvider) actionItem.getActionProvider(); actionProvider.setShareHistoryFileName(ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); Intent shareIntent = new Intent(Intent.ACTION_SEND); shareIntent.setAction(Intent.ACTION_SEND); shareIntent.setType( "text/plain" ); shareIntent.putExtra(Intent.EXTRA_TEXT, "aaa" ); actionProvider.setShareIntent(shareIntent); MenuItem overflowItem = menu.findItem(R.id.menu_item_share_action_provider_overflow); ShareActionProvider overflowProvider = (ShareActionProvider) overflowItem.getActionProvider(); overflowProvider.setShareHistoryFileName( ShareActionProvider.DEFAULT_SHARE_HISTORY_FILE_NAME); overflowProvider.setShareIntent(shareIntent); return true ; }
|
ShareActionProviderクラスの設定はonCreateOptionsMenu内で行います。
5〜8行目と14行目は最初から表示させておくMenuItemで、17〜22行目は共有履歴を表示するためのMenuItemです。
ではgetActionProviderメソッドを使用してMenuItemのShareActionProviderインスタンスを取得しています。
ここで取得したShareActionProviderインスタンスに対して、共有履歴の保存先と共有するIntentのActionを指定していきます。
8行目では共有履歴の保存先ファイル名をsetShareHistoryFileNameメソッドで指定しています。
setShareHistoryFileNameメソッドの引数には保存先のファイル名を指定します。
基本的にはShareActionProvider#DEFAULT_SHARE_HISTORY_FILE_NAME定数に保持されているファイル名で問題ありません。
19〜20行目では上記と同じ内容を共有履歴を表示するためのMenuItemに設定しています。
14行目ではShareActionProviderインスタンスに共有するIntentを指定しています。
サンプルではActionがIntent#ACTION_SEND、データが"text/plain"の受け口を持っているアプリへ共有できるようにしています。
22行目では上記と同じ内容を共有履歴を表示するためのMenuItemに設定しています。
0 件のコメント:
コメントを投稿