0

外部 SD カードを含むファイル システムを広範囲に使用するアプリがあります。

現在、ファイル API を使用してファイルの作成/削除/一覧表示を行っていますが、新しい Android Storage Access Framework を使用したいと考えています。

問題は、インストール ベースのほぼ 60% がまだ JB 以下にあり、新しいIntent.ACTION_OPEN_DOCUMENT_TREEが必要なことです。それを実装する方法がよくわかりません。

MyFile のようなアプリで使用する一般的なインターフェイスを作成し、プラットフォームのバージョンに応じて適切な API を使用することを考えましたが、それを行うライブラリが既に存在しない限り、多すぎます。

他の人は何をしていますか?この状況をどのように管理していますか?

4

1 に答える 1

0

操作を抽象化します。

多くの場所で使用する場合はFile、最初に などのインターフェイスの抽象クラスに置き換えて、FileSystemと同じ機能を提供しますFileが、実装の詳細は隠します。File を使用するすべての作業を削除して、たとえば という名前の TheFile インターフェイスの 1 つの実装に配置する必要がありますNativeFileSystem。開く/削除する/名前を変更する/作成するなど、必要なすべての機能を実装します。

ファクトリ関数を使用してFileSystem、たとえば Application クラスで作成します。これは、作業のために作成された実際のクラスが何であるかを後で決定する場所です。

実装の詳細を非表示にしてアプリが動作することをテストすると、たとえば という名前の新しい実装を作成しSAFFileSystem、必要な関数を実装できますが、Storage Access Framework が許可する方法で行うことができます。

メイン スレッドの File で実行できる一部のメソッドは、おそらく非同期になることに注意してください。これは、SAF がダイアログを表示し、ユーザーに確認を求める可能性があるためです。そのため、メソッド呼び出しに関連して、アプリでいくつかの手直しが行われる可能性があります。

それが役立つことを願っています。

于 2015-01-07T16:46:06.203 に答える