2018年4月
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          
ブログ:ココログ
時間のないサイト運営者リング
時間のないサイト運営者リング

« 「Ubuntu 14.04 LTS」公開、2年ぶりの長期サポート版 -INTERNET Watch | トップページ | 【レビュー】カスタマイズ性の高いタブレット端末向け仮想キーボードソフト「ちーたんタッチボード」 - 窓の杜 »

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 | トップページ | 【レビュー】カスタマイズ性の高いタブレット端末向け仮想キーボードソフト「ちーたんタッチボード」 - 窓の杜 »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/43319/59485641

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

« 「Ubuntu 14.04 LTS」公開、2年ぶりの長期サポート版 -INTERNET Watch | トップページ | 【レビュー】カスタマイズ性の高いタブレット端末向け仮想キーボードソフト「ちーたんタッチボード」 - 窓の杜 »


Google

サーチする:
Amazon.co.jp のロゴ









携帯URL