[Androidプログラミング] Storage Access Frameworkを使ってみる(1)
Android 4.4から追加された機能でファイルへのアクセスをするAPIです。アプリに対してはWindowsでいうところのファイルアクセス用のコモンダイアログのようなものが用意されています。また、ドキュメントプロバイダーが用意されていればクラウドストレージ(別にクラウドストレージでなくてもいいようです)へもこれを通じてアクセスできます。
次のように呼び出すと、ファイルを選択する画面が表示されます。
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(intent, REQ_OPEN); // <== REQ_OPENはアクティビティのどこかで定義しておく。
setTypeでMIMEタイプを設定しおくと選択できるファイルが制限されます。
これでファイル選択するアクティビティが表示されるので次は結果を受けとるところです。 onActivityResultをオーバーライドして次のようにします。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQ_OPEN) {
if(resultCode == RESULT_OK) {
Toast.makeText(this, data.getData().toString(), Toast.LENGTH_LONG).show();
Uri uri = data.getData();
ParcelFileDescriptor pfd;
try {
pfd = getContentResolver().openFileDescriptor(uri, "r");
FileDescriptor fd = pfd.getFileDescriptor();
FileInputStream fstream = new FileInputStream(fd);
InputStreamReader istream = new InputStreamReader(fstream);
BufferedReader buf = new BufferedReader(istream);
String str;
while((str = buf.readLine()) != null) {
Log.d("HOGE", str);
}
buf.close();
} catch (FileNotFoundException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
} catch (IOException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
}
super.onActivityResult(requestCode, resultCode, data);
}
と、こんなふうに行う。
決め打ちでテキストファイルってことにして処理しますが、適当に変更して下さい。(笑)
ファイルの新規作成もあるのでまた今度(^_^;)
« 「Ubuntu 14.04 LTS」公開、2年ぶりの長期サポート版 -INTERNET Watch | トップページ | [Androidプログラミング] Storage Access Frameworkを使ってみる(2) »
「Androidプログラミング」カテゴリの記事
- getevent/sendeventでAndroid端末の操作自動化(2015.02.18)
- Android - Mac OS X Yosemiteでエミュレータが動かない時の対処法 - Qiita(2014.11.18)
- Androidでノイズ除去作ってみたが・・・(2)(2014.08.21)
- MrKagerou: Eclipseでandroid NDK使用していて「Unresolved Inclusion」でこまってしまった時(2014.08.19)
- [Android] 回転対応(2014.08.12)
この記事へのコメントは終了しました。
« 「Ubuntu 14.04 LTS」公開、2年ぶりの長期サポート版 -INTERNET Watch | トップページ | [Androidプログラミング] Storage Access Frameworkを使ってみる(2) »
コメント