2012-01-04 3 views
2

特定のフォルダを開くことができるすべてのアプリケーションを一覧表示するダイアログを開くにはどうすればいいですか?フォルダを開く - インテントチューザー

私はそれを言うのコード

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setData(Uri.fromFile(Environment.getExternalStorageDirectory())); 
startActivity(Intent.createChooser(intent, "Open Folder")); 

次試してみました「いいえアプリケーションがこのアクションを実行することはできません。」

私のデバイスには、デフォルトのファイルエクスプローラとAndroidZipアプリケーションがあります(これらのアプリケーションはフォルダを開くことができます)。

答えて

4

「アプリケーションはこの操作を実行できません」と表示されます。

これは驚くべきことではありません。 Intentシステムには「フォルダー」は存在しないので、「フォルダー」を開くように求めているわけではありません。どのアプリケーションがファイル拡張子なしでMIMEタイプのないパスを開くことができるかを調べようとしています。ファイル拡張子がなく、MIMEタイプがないパス上でACTION_GET_CONTENTをサポートするアクティビティに<intent-filter>を持つアプリケーションがデバイスにインストールされていません。

ACTION_VIEWとお試しください。しかし、Androidデバイスの90%以上は「フォルダ」をこのように扱うものはないと推定しています。

+0

ありがとう、CW!あなたは本当にプロであり、プロ以外の人に親切にやります。 – herbertD

+0

簡単な質問ですが、どのようにしてフォルダに移動できますか?フォルダにmp3がすべて含まれているとします。 –

+0

@Aashish:あなたが私の答えを読んだら、「Intent」システムには「フォルダー」というものはありません。 – CommonsWare

2

ここで試してみてください。私のために働く。

public void openFolder() 
{ 
Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath() 
    + "/yourFolder/"); 
intent.setDataAndType(uri, "*/*"); 
startActivity(Intent.createChooser(intent, "Open folder")); 
} 

here

1

を参照してくださいディレクトリにあるファイルは、標準のMIMEタイプを持っていないようですので、私は、MIMEタイプなしで意図をフィルタリングするために私のファイルエクスプローラをコード化されました。あなたのフォルダのUriにデータを設定するだけです。私は、これはまた、拡張子に応じて、ファイルやフォルダのいずれかを開くためによく働く見つける

http://play.google.com/store/apps/details?id=com.organicsystemsllc.thumbdrive

Intent intent = new Intent(Intent.ACTION_VIEW); 
Uri uri = Uri.parse("file:///sdcard/MyFolder"); 
intent.setData(uri); 
startActivity(intent); 

この意図は、アプリ、次の起動します。フォルダのuriのファイル拡張子とMIMEタイプが、以下のコードスニペットでnullになります。これは、スキーム「ファイル」をフィルタリングするアクティビティに一致しますが、特定のMIMEタイプ(「Thumb Drive」)はありません。この方法では、uriがディレクトリの場合、すべてのファイルMIMEタイプをフィルタリングするアクティビティは見つかりません。

//Get file extension and mime type 
Uri selectedUri = Uri.fromFile(file.getAbsoluteFile()); 
String fileExtension = MimeTypeMap.getFileExtensionFromUrl(selectedUri.toString()); 
String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension); 

//Start Activity to view the selected file 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(selectedUri, mimeType); 
startActivity(Intent.createChooser(intent, "Open File...")); 
1

それは動作します:@CommonsWareは、株式Androidのシステム(で "ファイルエクスプローラ" の標準的な定義が存在doesntの、言ったように

Uri selectedUri = Uri.parse(Environment.getExternalStorageDirectory() + "/myFolder/"); 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(selectedUri, "resource/folder"); 
startActivity(intent); 

は、素敵なcodding :)残念ながら

+1

コードは私のためには機能しませんでした。フォルダを開く代わりに、例外が見つかりませんでした。 – dira

+1

おそらく、あなたのデバイスにエクスプローラアプリがインストールされていない可能性があります。それを確認してください。 –

+0

@Sa Qada Default File Managerで開くことはできますか?デフォルトのファイルマネージャにインテントフィルタACTION_VIEWがありますか? –

0

を持っていますあなたは、サードパーティの「ファイルエクスプローラ」)を..インストールしない限りです
なぜデフォルトで"resource/folder" MIMEタイプのdoesntの仕事..

最大値は、これが見つかりました:https://stackoverflow.com/a/41614535/2377343

関連する問題