有沒有辦法將android應用程序數據存儲在SD卡而不是內部存儲器中? 我知道如何將應用程序sqlite數據庫從內部存儲器傳輸到SDCard,但是如果內部存儲器首先被佔滿,該怎麼辦?每個人如何處理這個問題?在SD卡上存儲android應用程序數據
回答
警告:這個答案已經過時。您應該使用Environment.getExternalStorageDirectory()來獲取SD卡的根路徑,如下面的答案中所述。
老回答等等這有意義的評論:
添加/sdcard/
到根的路徑應該將你的Android應用程序使用的SD卡(至少它的工作原理是這樣與G1)。 Android的文件系統對象使您能夠檢查文件大小......因此應該有可能(如果技巧)編寫一些故障轉移代碼。如果內部內存已滿,此代碼將調整根路徑。
使用SDCard的問題在於,當您的應用程序需要它時,您無法可靠地認爲它將始終存在。內部存儲器並非如此。只要你的應用程序不依賴這個數據來運行它應該沒問題。
最好的做法是使用Environment.getExternalStorageDirectory()而不是硬代碼「/ sdcard」 這並不總是可以確定文件夾名稱會被調用。此外,Environment類還提供getExternalStorageState()方法來檢查外部存儲是否可用。
這是另一個整潔的小動作。 Application有許多被調用來獲取路徑的方法。 特別是,該應用程序具有方法getDatabasePath,由SQLiteOpenHelper使用來構建路徑。 自定義應用程序類可以覆蓋這些方法以提供不同的路徑,包括getExternalStorageDirectory中的路徑。
外部存儲器是特定應用程序或公共應用程序。 有許多方法,分別代替getExternalStorageDirectory機制, getExternalFilesDir()和getExternalStoragePublicDirectory()。
某些設備使用/ mnt/sdcard作爲根指向SD卡。
首先:
根據不同的型號/ OS,你可以訪問SD卡根目錄:
File externalStorage = Environment.getExternalStorageDirectory();
這將涉及內部SD存儲或內置SD記憶。
externalStorage.getAbsolutePath()
將返回下列的值
「/ SD卡/」 或 「/ MNT/SD卡/」
要訪問外部SD存儲器或微型SD,即一個您通常從手機/平板電腦的外部插入,您必須使用android創建的以下文件夾之一指向外部存儲器:
"/mnt/sdcard/sd"
"/mnt/sdcard/external_sd"
"/sdcard/external_sd"
"/sdcard/sd"
"/mnt/sdcard/"
個
PS:你可以看到在內部SD卡
存儲器的空文件夾external_sd
或sd
,該文件夾是空的,其用於指向外部的微型SD卡。
最後請確保您具有android清單xml中SD卡android.permission.WRITE_EXTERNAL_STORAGE
的讀取/寫入權限。
最後你必須指定文件名和您準備
private SQLiteDatabase DB = null;
private static final String DATABASE_NAME = "MyDb.db";
////////////
File sdcard = Environment.getExternalStorageDirectory();
String dbfile = sdcard.getAbsolutePath() + File.separator+ "external_sd" + File.separator + DATABASE_NAME;
DB = SQLiteDatabase.openDatabase(dbfile, null,SQLiteDatabase.NO_LOCALIZED_COLLATORS);
///////////
和你準備好去...
- 1. 存儲在SD卡中的Android數據
- 2. 無法在SD卡上存儲數據
- 3. SD卡上的Android應用程序
- 4. 在Sd卡上保存文件爲Mp3 {Android應用程序}
- 5. 在Android中將數據存儲在SD卡上
- 6. 在SD卡上存儲HashMap
- 7. 在SD卡上移動應用程序
- 8. 在SD卡上安裝應用程序
- 9. 手動以加密形式將應用程序數據存儲在SD卡中
- 10. 如何在SD卡中存儲應用程序
- 11. SD卡存儲與Android系統存儲
- 12. 將數據存儲在內存中而不是在SD卡上?
- 13. 卸載android應用程序是否刪除存儲在SD卡上的數據庫?
- 14. Android應用程序下載SD卡
- 15. Android應用程序不會從SD卡
- 16. Android - 內部存儲vs外部存儲當應用程序安裝在SD卡上
- 17. 從Android工作應用程序訪問SD卡數據
- 18. 在SD卡上分發android應用程序
- 19. 在SD卡上安裝android應用程序
- 20. android如何在SD卡上自動安裝應用程序
- 21. 在Android SD卡上安裝應用程序sdk 2.2
- 22. Android 4.4 - 在輔助SD卡上創建應用程序目錄
- 23. 直接在SD卡上安裝大型android應用程序
- 24. 在android中存儲數據文本到SD卡?
- 25. 需要使用非內存SD卡的Android應用程序
- 26. 在Android上存儲應用程序數據的位置?
- 27. 如何在SD卡上存儲關於文件的元數據?
- 28. 如何將所有Android應用程序默認存儲到SD卡
- 29. 在SD卡中存儲ByteArrayOutputStream
- 30. 無法保存文件到SD卡android應用程序
你是怎麼調整的根路徑? – user121196 2009-07-30 21:51:43
調整您正在使用的根路徑。 (這有點令人困惑......你不能改變Android的根路徑) – haseman 2009-07-30 23:46:57
我使用SQLiteDatabase來創建數據庫,但是它的構造函數的名稱參數不能包含路徑,我怎麼可能創建在SD卡上的數據庫? – user121196 2009-07-31 05:00:19