2012-10-19 36 views
7

Tôi có một số vấn đề với việc phát triển APP và sử dụng thẻ SD bên ngoài.Các sự cố thẻ SD Android

từ developer.android.com thiết bị

Mỗi Android tương thích hỗ trợ chia sẻ "bộ nhớ ngoài" mà bạn có thể sử dụng để lưu tệp. Đây có thể là phương tiện lưu trữ di động (chẳng hạn như thẻ SD) hoặc bộ nhớ trong (không thể tháo rời). Các tệp được lưu vào bộ nhớ ngoài có thể đọc được trên thế giới và có thể được người dùng sửa đổi khi chúng cho phép lưu trữ khối lượng USB để truyền tệp trên máy tính.

Có thể đó là vấn đề?

Tôi đang sử dụng LG L5 (E610)

Tôi đã thêm quyền chính xác vào tệp kê khai.

vấn đề khác của tôi có thể liên quan đến này issue

Bất kỳ sự giúp đỡ rất nhiều đánh giá cao. Cảm ơn bạn.

+0

vui lòng mở một câu hỏi cho mỗi sự cố. – pcans

+0

đã tách các câu hỏi – Rik

Trả lời

0

Đã khắc phục được sự cố.

Cảm ơn tất cả vì đã hỗ trợ ..

6

Bạn nói:

Vấn đề đầu tiên là tôi kiểm tra nếu có một thẻ SD gắn kết. Hàm này trả về true ngay cả khi không có thẻ SD nào được chèn vào.

Tôi nghĩ bạn đã tình cờ gặp phải điều gì đó phải mất chút thời gian để nắm bắt, bởi vì nó không rõ ràng.

Trong Android, bạn sẽ tìm thấy 2 loại bộ nhớ:

  • Hệ thống một, luôn luôn có sẵn, rất bảo đảm: ứng dụng của bạn chỉ có thể truy cập vào một phần nhỏ của nó dành riêng cho bạn và các ứng dụng khác không thể đọc được dữ liệu của bạn đó.
  • Thẻ được chia sẻ, thường được gọi là công khai, bên ngoài hoặc "sdcard". Mỗi ứng dụng đều có quyền truy cập đọc/ghi vào tất cả. Nhưng nó không phải là luôn luôn có sẵn, như bạn có thể "gắn kết" nó trên máy tính của bạn, có hiệu lực để tháo gắn nó trong Android và do đó ẩn nó. (nhưng chỉ trước khi Android 3.X).

Bạn sẽ tìm thấy 3 loại thiết bị trong môi trường tự nhiên:

  • Trên một số thiết bị, bộ nhớ chia sẻ này là trên một con chip được hàn bên trong thiết bị. do đó, sdcard tên là không đủ. Tuy nhiên, đường dẫn có thể là "/ sdcard"
  • Trên các thiết bị khác, bộ nhớ dùng chung này nằm trên thẻ sdcard thực mà bạn có thể xóa.
  • Trên một số thiết bị khác, bộ nhớ này dành cho một phần trên chip và một phần khác trên thẻ sdcard của bạn.

Dựa trên những gì bạn đã nói Tôi nghĩ bạn đang ở trên loại thiết bị thứ 3. Vì vậy, sdcard vật lý của bạn sẽ được tìm thấy trong loại đường dẫn: /mnt/sdcard/external_sd/. Đáng buồn thay, đây là thiết bị cụ thể, tôi không nghĩ rằng có một cái gì đó trong API Android để có được con đường này.

Ngoài ra, lưu ý hơn, kể từ Android 3.X, chúng tôi không cần phải "gắn kết" bộ nhớ dùng chung này nữa. Vì vậy, bộ nhớ dùng chung của bạn sẽ luôn ở đó cho Android vì chúng tôi hiện đang sử dụng giao thức MTP.

Đây là lý do tại sao isExternalStorageAvailable() trả về true, ngay cả khi sdcard của bạn bị xóa.

+0

Tệp rootsd = Environment.getExternalStorageDirectory(); có thể cung cấp cho đúng dir, tôi không thể thử ngay bây giờ. Hoặc bạn đang nói rằng ngay cả trong loại thứ 3 của đường dẫn thiết bị có thể tồn tại mà không có thẻ? – weston

+0

Trong loại thứ ba, getExternStorageDirectory() sẽ cung cấp cho bạn "/ mnt/sdcard /", nó sẽ tồn tại, có thể được đọc hoặc viết ngay cả khi sdcard vật lý của bạn bị xóa. – pcans

+0

thực sự với hàm getExternalStorageDirectory() tôi nhận đường dẫn "/ mnt/sdcard /" và để vào thư mục tôi cần thêm "external_sd /" nhưng điều này cho tôi vấn đề với việc đọc tệp (xem vấn đề khác). – Rik

Các vấn đề liên quan