<< Android-Note
外部アプリからファイルを取得するには
画像や音楽、動画などのファイルを取得したい場合、自前で処理を実装するよりもIntentから外部アプリに画像を持ってくるように頼む方が楽なうえにコードが少なくて済みます。
手順はこうです。
- ACTION_PICKをアクションにもつIntentを作る
- MIMEタイプ指定
- startActivityForResultでIntentを起動
- onActivityResultでファイルのURI取得
大雑把にはこのような流れで、実際には次のようなコードになります。
class MainActivity extends Activity { private final int REQUEST_PICK_PICTURE = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); /** 画像を取ってくる。 */ Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, REQUEST_PICK_PICTURE); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if(requestCode == REQUEST_PICK_PICTURE){ if(resultCode == RESULT_OK){ Uri uri = data.getData(); /** Uriを処理... */ } } } }
IntentのsetTypeには"image/*"などのようにMIMEタイプを渡してファイルの種類を指定します。
取ってきた画像や音楽などのファイルのUriはonActivityResultのIntentのgetDataメソッドから取得可能です。
ここではMIMEタイプに"image/*"を渡したので次のような画像アプリ選択ダイアログが表示されます。
もしMIMEタイプに"audio/*"を渡すと次のように音楽プレイヤーの選択ダイアログが表示されます。
以上が外部アプリからファイルURIを取得する方法です。
© Kaz