ファイルピッカーAPI概要

2.外部アプリからのContentsManager起動仕様

2.1 外部アプリからのCM起動シーケンス

外部アプリからContentsManager(以下、CMアプリと記載)を起動する際のシーケンスを以下に示します。

2.2 Activity起動パラメータ

外部アプリよりCMアプリは、参照連携(暗黙的/明示的)にてActivity起動(Activity.startActivityForResult)が行われます。
外部アプリから起動されるCMアプリの、Activity起動パラメータは以下の通りです。

アクション (必須:○)
Intent.ACTION_PICK
カテゴリ (必須:△)
クラス指定無し(暗黙)の場合は、Intent.CATEGORY_DEFAULTを、クラス指定あり(明示)の場合は、指定の必要ありません。
MIMEタイプ (必須:△)
  • 初期表示させたいタブのMIMEタイプを指定します。
    (ここでの初期表示とは、そのタブが選択された状態で表示ことです。)
  • クラス指定あり(明示)場合、MIMEタイプを指定する必要はありません。
    指定しない場合の初期表示は、Extraキー[EXTRA_KEY_CATEGORY]に準じます。
    MIMEタイプで指定したタブが、Extraキー[EXTRA_KEY_CATEGORY]で表示指定しカテゴリと合致しない場合、MIMEタイプの指定は無効になります。
  • クラス指定無し(暗黙)の場合、必ず何れかのMIMEタイプを指定してください。
    なお、同じタブ内のものであれば、どれを選んでも動作は変わりません。
  • タブを直接指定したい場合は、タブ指定用に用意された特別なMIMEタイプ(vnd.android.cursor.dir/xxx)を指定してください。
  • MIMEタイプを指定した場合、どのタブが初期表示されるかは、下記の表を参考にしてください。
初期表示させたいタブ サポートするMIMEタイプ
◎:タブを直接指定したい場合に指定するMIMEタイプ
フォト vnd.android.cursor.dir/image ◎
image/jpeg
image/gif
image/png
image/x-ms-bmp
image/vnd.wap.wbmp
ムービー vnd.android.cursor.dir/video ◎
video/mp4
video/x-ms-wmv
ミュージック vnd.android.cursor.dir/audio ◎
audio/amr
audio/amr-wb
audio/mp4
audio/mpeg
audio/x-ms-wma
audio/x-wma-drm
audio/x-wma-10-professional
audio/midi
audio/mobile-xmf
audio/imelody
audio/x-wav
audio/sp-midi
application/ogg
application/vnd.smaf
ドキュメント vnd.android.cursor.dir/doc ◎
application/msword
application/vnd.ms-excel
application/vnd.ms-powerpoint
application/pdf
text/comma-separated-values
text/plain
application/vnd.openxmlformats-officedocument.wordprocessingml.document
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
application/vnd.openxmlformats-officedocument.presentationml.presentation
その他 vnd.android.cursor.dir/etc ◎
application/x-shockwave-flash
application/x-tar
text/x-vcard
text/calendar
text/x-vcalendar
text/x-vmessage
text/x-vnote
application/x-mpeg
audio/qcp
application/vnd.yamaha.hv-script
message/rfc822
text/html
audio/x-mpegurl
audio/x-scpls
application/vnd.ms-wpl
application/x-zaurus-zbf
application/x-zaurus-zbk
application/x-iwnn
text/x-vbookmark
データ (必須:-)
指定なし
クラス (必須:△)
暗黙的にCMを呼び出す場合は、指定なし、明示的にCMを呼び出す場合には、jp.co.sharp.android.cm を指定してください。
拡張1(putExtra) (必須:△)
絞り込み条件(CMにて表示されているコンテンツのクエリー条件)

Extraキー《String name》
カテゴリ(種別)
jp.co.sharp.android.contentsmanager.EXTRA_KEY_CATEGORY
保存場所
jp.co.sharp.android.contentsmanager.EXTRA_KEY_SAVE_POINT
検索対象文字列
jp.co.sharp.android.contentsmanager.EXTRA_KEY_WORD
ソート条件
jp.co.sharp.android.contentsmanager.EXTRA_KEY_SORT_TYPE
選択モード
jp.co.sharp.android.contentsmanager.EXTRA_KEY_SELECT_TYPE

設定値《Bundle value》
ArrayList<String>
カテゴリ(種別)
(指定されたカテゴリパラメータは、CM起動時の選択可能タブです)
"0" 1) フォト:指定なし
"1" 2) フォト:デジタルカメラ画像(Exifヘッダ有りのJPEGファイルを表示)
"2" 3) フォト:絵文字(20x20のgif,jpeg画像を表示)
"3" 4) フォト:その他
"4" 5) ムービー:指定なし
"5" 6) ムービー:撮影動画(本体またはmicroSDカードの"/movie"以下の動画を表示)
"6" 7) ムービー:ダウンロード動画(本体またはmicroSDカードの"/download"以下の動画を表示)
"7" 8) ムービー:その他
"8" 9) ミュージック:指定なし
"9" 10) ミュージック:ミュージック
"10" 11) ミュージック:サウンド
"14" 12) ドキュメント:指定なし
"15" 13) ドキュメント:Office
"16" 14) ドキュメント:PDF
"17" 15) ドキュメント:txt
"18" 16) その他:指定なし(その他タブは種別指定できません)
※未指定の場合はMimeTypeにそったタブのみを表示するします。MimeTypeが"*/*"の場合は全てのタブを表示します。
※カテゴリ指定とMIMEタイプ指定が異なっている場合はカテゴリ指定を優先します。未指定の場合は初期値としてフォトを表示します。指定してある場合は最初に指定されたカテゴリのタブを表示します。

ArrayList<String>
保存場所
"0" : 本体
"1" : microSD
"2" : プリセットデータ
※未指定の場合はデフォルト:本体+microSDが選択対象となります。

String
検索対象文字列 : 検索文字列
外部アプリより絞り込みを行いたい検索対象文字列を指定
制限事項:
1.最大入力文字数は、100byte(最大文字数100byteを超える場合は切り捨て)
2.文字列内にカンマ(",")等で複数指定は不可
3.基本的な禁則文字は使用不可(下記、例を参照)
 \ 半角エンマーク
 / 半角スラッシュ
 : 半角コロン
 * 半角アスタリスク
 ? 半角クエスチョンマーク
 " 半角ダブルクォーテーション
 < 半角左アングルかっこ
 > 半角右アングルかっこ
 | 半角パイプ
 改行コード
 ; 半角セミコロン
 , 半角カンマ
 . 半角ドット
4.絵文字は使用不可

String
ソート条件
"4" 1) ファイルサイズ 昇順
"5" 2) ファイルサイズ 降順
"0" 3) 保存日時 昇順
"1" 4) 保存日時 降順
"2" 5) タイトル 昇順
"3" 6) タイトル 降順
※未指定の場合はデフォルト:4) 保存日時 降順

String
選択モード
"0" : 1件選択
"1" : 複数選択
※未指定の場合はデフォルト:1件選択
※複数選択モードの場合のチェック可能な上限は100件

2.2.1 サンプルソースコード

下記ソースコードは、外部アプリよりCMを起動する際のサンプソースコードです。

Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
/* 明示的インテント */
intent.setClassName(
    "jp.co.sharp.android.cm",
    "jp.co.sharp.android.cm.main.view.ContentManagerActivity"
);
 
/* MIMEタイプの設定 */
//imageの場合

intent.setType("vnd.android.cursor.dir/image");
 
/* カテゴリ設定 */
ArrayList<String> category = new ArrayList<String>();
/*必要なカテゴリを追加する*/
category.add("1");/*デジタルカメラ画像*/
category.add("2");/*絵文字*/
intent.putStringArrayListExtra(
    "jp.co.sharp.android.contentsmanager.EXTRA_KEY_CATEGORY",
    category
);
 
/* 保存場所設定 */
ArrayList<String> savePoint = new ArrayList<String>();
savePoint.add("0");/* 内部Storage */
savePoint.add("1");/* 外部Storage */
intent.putStringArrayListExtra(
    "jp.co.sharp.android.contentsmanager.EXTRA_KEY_SAVE_POINT",
    savePoint
);
 
//検索対象文字列設定
intent.putExtra(
    "jp.co.sharp.android.contentsmanager.EXTRA_KEY_WORD",
    "検索文字列を入力"
);
 
//ソート条件設定
intent.putExtra(
    "jp.co.sharp.android.contentsmanager.EXTRA_KEY_SORT_TYPE",
    "5"
);  /*ファイルサイズ降順*/
 
//選択モード設定
intent.putExtra(
    "jp.co.sharp.android.contentsmanager.EXTRA_KEY_SELECT_TYPE",
    "0"
);  /*一件選択モード*/
 
startActivityForResult(intent, 0);

2.2.2 Extraキー設定値反映項目 CM画面対応

上記表の拡張1(putExtra)で設定されるExtraキーの設定値は、CMアプリ画面の下記項目に対応します。

2.3 Activity終了パラメータ

戻り値
Activity.setResult(int resultCode, Intent data)
  《int resultCode》 終了コード
Activity.RESULT_OK
Activity.RESULT_CANCELED
(キャンセル時には、《Intent data》の各パラメータに何も設定されません)
《Intent data》 起動先アプリから設定されるIntent(*)
(*)起動先アプリから設定されるIntent
項目 必須 内容
データ 選択したコンテンツのUri
複数件の場合は、1件目のUriがセットされる。(Androidでの互換性確保の為)

content://internal/images/media/[ID] ※ など
※[ID]:ContentsManagerにより選択されたファイルのレコードID
使用方法については、サンプルソースコード("2.5 選択されたコンテンツ(1件)情報の取得")を参照してください。
拡張1
(putExtra)
ファイルパス(選択されたUriのリストを格納したテキストファイル)
選択ファイルが複数件の場合のみファイルパスが設定され、1件の場合ファイルパスは設定されません。
※本ファイルは、次回CMにて参照連携が行われる際に削除されます

Extraキー《String name》
jp.co.sharp.android.contentsmanager.EXTRA_KEY_SELECT_LIST
選択コンテンツのリストファイル
設定値《Bundle value》
String
選択されたUriのリストを格納したテキストファイルのパス
※選択Uriが複数件の場合のみ本ファイルを作成します
使用方法については、サンプルソースコード("2.4 一時ファイルから選択コンテンツ情報の取得")参照してください

CMアプリで設定されたActivity終了パラメータより、一時ファイル("拡張1")から選択されたコンテンツ情報を取得します。

2.4 一時ファイルから選択コンテンツ情報の取得

サンプルコード

/* ファイルパス(選択されたUriのリストを格納したテキストファイル)の取得 */
String readFile = intent.getStringExtra(
    "jp.co.sharp.android.contentsmanager.EXTRA_KEY_SELECT_LIST"
);
 
/* 一時ファイルから選択コンテンツ情報を1件ずつ読み込む */
String readBuf;
 
File file = new File(readFile);
FileReader freader = null;
BufferedReader breader = null;
try {
    freader = new FileReader(file);
    breader = new BufferedReader(freader);
    while((readBuf = breader.readLine()) != null){
        /* Uriを1件ずつ読み出す */
        /* CMアプリで選択したカテゴリを再生 */

    }
} catch (IOException e) {
    // TODO 自動生成された catch ブロック
    e.printStackTrace();
} finally {
    try {
        if (breader != null) {
            breader.close();
        }
    } catch (Exception e) {
    }
}

CMアプリで設定されたActivity終了パラメータより選択したコンテンツのUri("データ")を取得する。

2.5 選択されたコンテンツ(1件)情報の取得

サンプルコード

/* 選択したコンテンツのUriを取得 */
 Uri uri = intent.getData();

戻る

このページの先頭へ