1

特定のディレクトリを開く次のコードを見つけました。

Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.parse(StaticMember.APP_DIR);
intent.setDataAndType(uri, "resource/folder");
context.startActivity(intent);

しかし、ES ファイル エクスプローラーがデバイスにインストールされている場合にのみ機能し、他のファイル マネージャー アプリでは検出できないという問題に直面しています。

この問題を解決するにはどうすればよいですか?

4

1 に答える 1

0

まず、resource/folder公式の MIME タイプではありません。

2 つ目ACTION_VIEWは、コンテンツを表示するためのものです。Android の観点からは、ディレクトリはコンテンツの一部ではありません。

ディレクトリの内容を表示できるアクティビティを Android デバイスに持たせる必要はありません。どのIntent構造がそのような活動を要求するかについての公式の基準はありません。ファイルマネージャの開発者の間ではいくつかの慣習があるかもしれませんが (たとえば、一体何であろうresource/folderとも)、すべてのファイルマネージャがそのようなアクティビティを提供したり、ユーザーがそのようなファイルマネージャをインストールしたりする必要はありません。

したがって、次のいずれかで問題を解決します。

  • コードを削除して機能を削除する、または

  • PackageManagerとを使用しqueryIntentActivities()て、 を処理するアクティビティがあるかどうかを確認しIntent、何もない場合は正常に失敗します

  • をキャッチし、ActivityNotFoundException投げられた場合は優雅に失敗する

  • ディレクトリを参照するためにサードパーティのアプリに依存しようとしないでください。また、そのために独自の UI を実装しようとしないでください。おそらく、そのために既存のサードパーティのライブラリを使用します。

于 2016-10-29T15:34:57.660 に答える