2025年3月
            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 26 27 28 29
30 31          
無料ブログはココログ

« 「Ubuntu 14.04 LTS」公開、2年ぶりの長期サポート版 -INTERNET Watch | トップページ | [Androidプログラミング] Storage Access Frameworkを使ってみる(2) »

2014.04.19

[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プログラミング」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: [Androidプログラミング] Storage Access Frameworkを使ってみる(1):

« 「Ubuntu 14.04 LTS」公開、2年ぶりの長期サポート版 -INTERNET Watch | トップページ | [Androidプログラミング] Storage Access Frameworkを使ってみる(2) »