1. ホーム
  2. android

[解決済み] Android: インテントで特定のフォルダを開き、その内容をファイルブラウザに表示するには?

2023-06-22 17:23:45

質問

これは簡単なことだと思ったのですが、残念ながらそうではありません。

私が持っているもの

私は外部ストレージ (Nexus 4 なので SD カードではありませんが、それは問題ではないはずです) に "myFolder" と呼ばれるフォルダを持っています。このフォルダーには、いくつかの *.csv ファイルが含まれています。

私が欲しいもの

私は以下のことを行うメソッドを書きたいです。さまざまなアプリ (ファイル ブラウザー) を表示し、そこから 1 つを選ぶことができます (図を参照)。私がそれをクリックした後、選択したファイル ブラウザが起動し、"myFolder" のコンテンツを表示する必要があります。それ以上でも以下でもありません。

私の質問です。

具体的にどうすればいいのでしょうか?次のコードでかなり近づいたと思いますが、何をやっても - そして、私がまだ正しく理解していない何かがあるに違いないと確信していますが - 常に外部ストレージからメイン フォルダのみを開きます。

public void openFolder()
{
File file = new File(Environment.getExternalStorageDirectory(),
    "myFolder");

Log.d("path", file.toString());

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setDataAndType(Uri.fromFile(file), "*/*");
startActivity(intent);
}

どのように解決するのですか?

ようやく動作するようになりました。この方法では、いくつかのアプリだけがチューザーによって表示されます (Google Drive、Dropbox、Root Explorer、および Solid Explorer)。2 つのエクスプローラーでは正常に動作していますが、Google Drive と Dropbox では動作していません (外部ストレージにアクセスできないためだと思います)。他のMIMEタイプのような "*/*" のような他の MIME タイプも可能です。

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