Có cách nào để lưu trữ dữ liệu ứng dụng Android trên thẻ SD thay vì trong bộ nhớ trong không? Tôi biết cách chuyển ứng dụng cơ sở dữ liệu sqlite từ bộ nhớ trong sang SDCard, nhưng nếu bộ nhớ trong có đầy đủ ở vị trí đầu tiên thì sao? Mọi người xử lý như thế nào?lưu trữ dữ liệu ứng dụng Android trên Thẻ SD
Trả lời
Cảnh báo: Câu trả lời này đã lỗi thời. Bạn nên sử dụng Environment.getExternalStorageDirectory() để lấy đường dẫn gốc của thẻ SD như được đề cập trong các câu trả lời bên dưới.
Old trả lời nên các ý kiến trên này làm cho cảm giác:
Thêm /sdcard/
vào thư mục gốc đường dẫn của bạn nên chỉ đạo ứng dụng Android của bạn để sử dụng thẻ SD (ít nhất là nó hoạt động như vậy với G1). Các đối tượng hệ thống tệp của Android cung cấp cho bạn khả năng kiểm tra kích thước tệp ... vì vậy, có thể (nếu khó) để viết một số mã không thành công. Mã này sẽ điều chỉnh đường dẫn gốc của bạn nếu bộ nhớ trong được lấp đầy.
Vấn đề với việc sử dụng SDCard là bạn không thể tin tưởng một cách đáng tin cậy rằng nó sẽ luôn hiện diện khi ứng dụng của bạn cần. Đây không phải là trường hợp với bộ nhớ trong. Miễn là ứng dụng của bạn không dựa vào dữ liệu này để chạy nó sẽ ổn.
Thực tiễn tốt hơn là sử dụng Environment.getExternalStorageDirectory() so với mã cứng "/ sdcard" Không phải lúc nào cũng chắc chắn rằng tên thư mục sẽ được gọi đó. Ngoài ra, lớp Environment cung cấp phương thức getExternalStorageState() để kiểm tra xem bộ nhớ ngoài có khả dụng không.
Điều này không phải lúc nào cũng hoạt động vì vị trí thẻ SD * thực * của Samsung là 'Environment.getExternalStorageDirectory() +"/external_sd "'. Các thiết bị khác sẽ có các vị trí khác nhau. – Muz
Đây là một mẹo nhỏ gọn gàng khác. Application có một số phương pháp được gọi để thu thập đường dẫn. Cụ thể là ứng dụng có phương pháp getDatabasePath với được sử dụng bởi SQLiteOpenHelper để xây dựng đường dẫn. Một lớp ứng dụng tùy chỉnh có thể ghi đè các phương thức này để cung cấp các đường dẫn khác nhau bao gồm các đường dẫn trong getExternalStorageDirectory.
Bộ nhớ ngoài là ứng dụng cụ thể hoặc công khai. Có các phương pháp, thay thế cơ chế getExternalStorageDirectory, getExternalFilesDir() và getExternalStoragePublicDirectory() tương ứng.
một số thiết bị sử dụng/mnt/sdcard làm điểm gốc cho thẻ SD.
Để bắt đầu:
Tùy thuộc vào mô hình/os, bạn có thể truy cập vào thư mục gốc thẻ sd với:
File externalStorage = Environment.getExternalStorageDirectory();
này sẽ đề cập đến việc lưu trữ sd nội bộ hoặc bộ nhớ sd nội bộ.
externalStorage.getAbsolutePath()
sẽ trở lại một trong các giá trị sau
"/ sdcard /" hoặc "/ mnt/sdcard /"
Để truy cập vào bộ nhớ sd bên ngoài hoặc micro SD, mà bạn thường cắm từ bên ngoài điện thoại/máy tính bảng, bạn phải sử dụng một trong các thư mục sau mà android tạo để trỏ tới bộ nhớ ngoài:
"/mnt/sdcard/sd"
"/mnt/sdcard/external_sd"
"/sdcard/external_sd"
"/sdcard/sd"
"/mnt/sdcard/"
ps: bạn có thể nhận thấy một thư mục trống external_sd
hoặc sd
trên sdcard nội bộ
bộ nhớ, thư mục này trống và được sử dụng để trỏ tới thẻ micro sd bên ngoài.
ở cuối đảm bảo rằng bạn có quyền truy cập đọc/ghi vào thẻ sd android.permission.WRITE_EXTERNAL_STORAGE
trong tệp kê khai xml android.
cuối cùng bạn phải ghi rõ tên tập tin và bạn đã sẵn sàng
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);
///////////
và sẵn sàng của bạn để đi ...
Thật không may, điều này hoàn toàn không phải là tiêu chuẩn. Trên LG Optimus, nó nằm trong/mnt/sdcard/_ExternalSD. Tôi hy vọng một người nào đó tại google sẽ xem xét tất cả những điều đó. Đặt tên của phương tiện truyền thông là rất xấu (bên ngoài ???) và các tài liệu không nói một lời về cách truy cập sdcard thứ hai khi có một built-in. – Snicolas
Bạn có thể giúp đỡ trong việc nhận tất cả tên thư mục có trong thẻ SD không. –
- 1. Lưu trữ dữ liệu trên thẻ SD trong Android
- 2. Android: sử dụng cơ sở dữ liệu SQLite trên thẻ SD (không sử dụng Kho dữ liệu Android bên trong)
- 3. Làm cách nào để sao lưu tệp cơ sở dữ liệu vào thẻ SD trên Android?
- 4. Sử dụng máy ảnh không có thẻ SD trên Android
- 5. Đề xuất cho việc lưu trữ dữ liệu trên Android?
- 6. ghi tệp vào thẻ sd và không lưu trữ USB
- 7. Ứng dụng Android của tôi đang làm hỏng Thẻ SD
- 8. Khởi động lại dịch vụ cho ứng dụng trên thẻ SD Khi thẻ SD được remounted
- 9. Di chuyển ứng dụng sang thẻ SD
- 10. Quyền đọc dữ liệu từ Thẻ SD
- 11. Có cách nào để phát hiện xem gói ứng dụng được lưu trữ trên thẻ SD hay không?
- 12. Các sự cố thẻ SD Android
- 13. Android chuyển sang hành vi thẻ SD
- 14. Lưu hình ảnh bitmap vào thẻ SD trong Android
- 15. Giải nén tệp đã nén trên thẻ sd trong ứng dụng Android
- 16. Ưu điểm của dữ liệu schemaless lưu trữ trên lưu trữ dữ liệu với lược đồ
- 17. Android - Lưu hình ảnh từ URL vào thẻ SD
- 18. Lưu trữ dữ liệu trong Ứng dụng Google App Engine
- 19. Lưu dữ liệu ứng dụng Android trong Google Cloud
- 20. cách lấy tên tệp được lưu trữ trong thẻ sd trong android
- 21. Trình giả lập Android lưu trữ các tệp SD-Card ở đâu?
- 22. lập trình truy cập lưu trữ nội bộ (không thẻ SD) trên Verizon HTC Droid Incredible (Android)
- 23. Lưu trữ dữ liệu ứng dụng trong Active Directory
- 24. Lưu trữ dữ liệu toàn cầu về ứng dụng
- 25. Cách tìm hiểu xem ứng dụng đã được di chuyển sang thẻ SD trên Android
- 26. Android sao lưu và khôi phục cơ sở dữ liệu đến và đi từ SD-card
- 27. Không thể di chuyển ứng dụng sang thẻ SD
- 28. là có thể xem dữ liệu ứng dụng từ adb shell giống như cách tôi thấy nó gắn thẻ SD?
- 29. Lưu trữ dữ liệu lớn cục bộ hoặc trực tuyến cho ứng dụng Android?
- 30. Android Save Image vào thẻ SD
làm thế nào để bạn điều chỉnh đường dẫn gốc? – user121196
Điều chỉnh đường dẫn gốc bạn đang sử dụng. (Đó là một chút khó hiểu ... bạn không thể thay đổi đường dẫn gốc của Android) – haseman
Tôi đang sử dụng SQLiteDatabase để tạo cơ sở dữ liệu, tuy nhiên đối số tên của hàm tạo của nó không thể chứa đường dẫn, làm cách nào tôi có thể tạo cơ sở dữ liệu trên sdcard? – user121196