2016-12-10 4 views
0

私は、ユーザが自分の電話機でファイルをブラウズして選択することができるアプリケーションを作成しようとしています。次に、選択したファイルを開いて読みたいと思います。シンプルに聞こえるが、私は立ち往生している。ここで私は、ユーザーがファイルを選択することを可能にするために使用するコードは次のとおりです。
ファイルを選択して読むことをユーザに許可する

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
//intent.addCategory(Intent.CATEGORY_OPENABLE); 
intent.setType("file/*"); 
startActivityForResult(intent,1); 

私は、理由を理解していない私は、このコードを実行したときに、私は(自分の携帯電話上の)私のダウンロードフォルダ内のファイルを閲覧することができますが、私その中で何も選択できません。私はマニフェストに必要なすべての許可を持っていますが、それでも動作しません。何か案が ?

+1

'setType()'を削除するか 'setType(" */* ")'を使用してください。 'file/*'は有効なMIMEタイプではありません。 – CommonsWare

+0

しかし、私はユーザーに.txtファイルを開くようにしてほしい。 – Mtoypc

+0

そして 'setType(" text/plain ")'を使う。 – CommonsWare

答えて

1

IntentsetType()を呼び出すときは、有効なMIMEタイプまたはMIMEタイプのパターンを指定する必要があります。 file/で始まる公式のMIMEタイプは存在しないため、file/*のMIMEタイプパターンは何にもマッチしません。

が、私は、ファイルの拡張子、あるいはファイル名があるように持っていないとしてあなたは、ファイル拡張子によってACTION_GET_CONTENTをフィルタリングすることができないユーザーが.txtファイルに

を開きたいです。あなたはになります。 doはMIMEタイプのフィルタであり、プレーンテキストのMIMEタイプはtext/plainです。他の種類のテキスト(HTMLなど)をサポートしたい場合は、text/*のMIMEタイプパターンを使用します。

関連する問題