2014-11-25 213 views
0

我有一個應用程序,廣泛使用包括外部SD卡的文件系統。一起使用Android存儲訪問框架和直接文件訪問

目前它使用File API來創建/刪除/列表文件,但我想使用新的Android存儲訪問框架。

問題是,幾乎60%的安裝基礎仍在JB和以下,我需要新的Intent.ACTION_OPEN_DOCUMENT_TREE。我不太清楚如何去實施它。

我以爲我會寫一個通用接口在我的應用程序中使用,就像MyFile一樣,然後根據平臺版本使用適當的API,但除非已經有了一個庫,否則它會太多。

其他人在做什麼?你如何處理這種情況?

+0

我希望這個庫可以幫助你_https://github.com/bartwell/ExFilePicker_ – Rick 2015-01-05 00:12:30

+1

請參閱[android-simple-storage](https://github.com/sromku/android-simple-storage)和[G -Rex](https://github.com/Naturally-Being/G-Rex) – mmlooloo 2015-01-05 03:48:42

回答

0

對您的操作進行抽象。

如果您在許多地方使用File,請首先將其替換爲一些抽象類接口,如FileSystem,提供與File相同的功能,但隱藏實施細節。所有使用File的工作都必須被刪除,並放置在您的TheFile界面的一個實現中,例如NativeFileSystem。實現所有必需的功能,例如打開/刪除/重命名/創建。

例如在您的Application類中使用工廠函數創建FileSystem。這是你後來決定什麼是爲工作創建的實際班級的地方。

當您測試隱藏實現細節並且您的應用程序有效時,可以創建一個名爲SAFFileSystem的新實現,並實現所需的功能,但以Storage Access Framework允許的方式執行。

準備好一些可以在主線程上的文件上運行的方法可能是異步的。這是因爲SAF可能會顯示對話並要求用戶確認。所以你的應用可能會有一些與方法調用相關的返工。

希望有所幫助。