回答
可以使用內容提供者的文件方法(如 openTypedAssetFile())將數據存儲在文件中。這將返回一個AssetFileDescriptor(即跨進程的有效文件句柄)而不是Cursor。
總的來說,這個問題很難回答。內容提供者是數據存儲庫和客戶端之間的「接口」。除了SQLite以外,這些文檔沒有多說關於存儲庫的內容,因爲a)內容提供者模型是沿着關係數據庫的行組織的,b)每個內容提供者的實現都會有所不同。
在知道確切的要求之前,我毫不猶豫地給出了更多建議。這可能是你可以從SQLite中受益,儘管你可能不會立即明白爲什麼。你也可能是正確的:SQLite不是解決方案,但給了更多的信息,我可以提出一些想法。
我明白你的意思了。另外,似乎ContentProvider的一些功能需要數據庫。我一直在試圖找到實現query()函數的方法,但是因爲它必須返回一個Cursor對象,所以在這種情況下,我猜SQLite是必須的。 – drum 2012-03-16 18:31:20
查找[this](https://android.googlesource.com/platform/packages/providers/WebSearchProvider/+/8637dd8dc1b255052b2615430bfb4603fa8711f7/src/com/android/websearch/SuggestionProvider.java)不使用SQLIte。源數據是JSONArray。我們可以學習如何創建一個Cursor extend AbstractCursor。 – Yeung 2014-04-04 04:23:42
那麼我知道你正在嘗試做什麼可能會創建圖像,電影,或與內部存儲。
您可以使用InternalStorage來存儲數據字節。如果你有個字節,你可以這樣做:
String FILENAME = "hello_file";
String string = "hello world!";
FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
fos.write(string.getBytes());
fos.close();
把它弄出來:
File file = ...
OutputStream out = null;
try {
out = new BufferedOutputStream(new FileOutputStream(file));
...
finally {
if (out != null) {
out.close();
}
}
是的,我已經看到此頁面。但是,這在內容提供商中不起作用。 – drum 2012-03-21 22:23:47
在Android SDK示例中有一個名爲FileProvider.java的示例,它使用ContentProvider而不是SQLite數據庫。
- 1. 內容提供者和內容觀察者示例?
- 2. 內容提供者x正常Sqlite
- 3. android內容提供者的使用者
- 4. 內容提供者
- 5. 內容提供者不與SqliteDatabase同步
- 6. 內容提供者無法刪除SQLite中的行
- 7. 內容提供者和sqlite數據庫,uri語法
- 8. 內容提供者和內容觀察者同步
- 9. 默認啓動內容提供者Android
- 10. 意圖vs內容提供者在android
- 11. Android - 內容提供者查詢光標
- 12. 內容提供者更新所有行
- 13. android自定義內容提供者
- 14. android內容提供者權限
- 15. 內容提供者資源$ NotFoundException
- 16. eclipse中的樹內容提供者
- 17. 內容提供者未知uri
- 18. 動態註冊內容提供者
- 19. 多個表格的內容提供者
- 20. 內容提供者拋出異常
- 21. Android。內容提供者或數據庫?
- 22. 無法獲得內容提供者
- 23. 使用直接數據庫訪問而不是內容提供者的android應用程序的示例?
- 24. 如何預先實例化我的內容提供者?
- 25. 消費者和提供商的LTI兼容示例
- 26. 如果db的內容提供者調用REST內容提供者,如果db沒有信息
- 27. Android的內容提供者由Kotlin提供
- 28. 如何使內容提供者數據可用於android
- 29. 使用內容提供者從數據庫加載數據
- 30. 如何使用內容提供者添加限制條款
請定義「使用內部存儲的內容提供者」的含義,考慮到SQLite通常使用內部存儲,但您不需要SQLite。 – CommonsWare 2012-03-15 17:08:07
@CommonsWare根據Android開發頁面,有5種存儲數據的方式:共享首選項,內部存儲,外部存儲,SQLite數據庫和網絡連接。我希望我的內容提供商使用內部存儲選項。 – drum 2012-03-15 17:13:45
上下文中的內部存儲意味着將東西存儲在應用程序私有數據區域的文件中。這不是一個真正的API。鑑於SQLite數據庫是作爲文件存儲在應用程序的私有數據區域中的,因此您必須做一些非常專業的事情才能使其值得費心---使用SQLite通常更容易(也更快)。 – 2012-03-15 17:16:09