2012-10-19 11 views
7

Mam kilka problemów z tworzeniem aplikacji i korzystaniem z zewnętrznej karty SD.Problemy z kartami SD w Androidzie

z developer.android.com urządzenie

Każdy Android kompatybilne wspiera wspólne "pamięć zewnętrzna", której możesz użyć do zapisywania plików. Może to być wymienny nośnik pamięci (taki jak karta SD) lub wewnętrzna (nieusuwalna) pamięć masowa. Pliki zapisane w pamięci zewnętrznej są odczytywane na całym świecie i mogą być modyfikowane przez użytkownika po włączeniu pamięci masowej USB w celu przesyłania plików na komputer.

Może to jest problem?

używam LG L5 (E610)

Dodałem prawidłowego uprawnienia do pliku manifestu.

Mój inny problem może być związany z tym issue

Każda pomoc jest bardzo cenione. Dziękuję Ci.

+0

proszę otworzyć jedno pytanie za problem. – pcans

+0

podzieliłem pytania – Rik

Odpowiedz

0

Naprawiono, był własny problem.

Dziękuję wszystkim za pomoc ..

6

Mówiłeś:

Pierwszym problemem jest to, że mogę sprawdzić, czy jest karta SD zamontowane. Ta funkcja zwraca wartość true, nawet jeśli nie ma włożonej karty SD.

Myślę, że natknąłeś się na coś, co zajmuje trochę czasu, aby uchwycić, ponieważ w ogóle nie jest to krystalicznie czyste.

W Androidzie znajdziesz 2 rodzaje pamięci:

  • jednego systemu, zawsze dostępną, wysoce zabezpieczone: aplikacja może mieć dostęp tylko do niewielkiej części on dedykowany dla Ciebie i inne aplikacje nie może odczytać danych tam.
  • Wspólny, często nazywany publicznym, zewnętrznym lub "sdcard". Każda aplikacja ma dostęp do odczytu i zapisu. Ale nie zawsze jest to możliwe, ponieważ możesz "zamontować" go na swoim komputerze, mając taki efekt, aby odmontować go w Androidzie, a zatem ukrywając go. (ale tylko przed Androidem 3.X).

Znajdziesz tu 3 rodzaje urządzeń w środowisku naturalnym:

  • na niektórych urządzeniach, to pamięć dzielona jest na chipie przylutowane wewnątrz urządzenia. więc nazwa sdcard nie jest wystarczająca. Mimo to ścieżka może być "/ sdcard"
  • Na innych urządzeniach ta pamięć współużytkowana znajduje się na prawdziwym sdcard, który można usunąć.
  • Na niektórych innych urządzeniach ta pamięć dotyczy części na chipie, a innej części na karcie SD.

Na podstawie tego, co powiedziałeś, myślę, że używasz trzeciego urządzenia. Więc twoja fizyczna sdcard zostanie znaleziona na tej ścieżce: /mnt/sdcard/external_sd/. Niestety, jest to specyficzne dla urządzenia, nie sądzę, że jest coś w API systemu Android, aby uzyskać tę ścieżkę.

Pamiętaj również, że od wersji Android 3.X nie musimy już "montować" tej pamięci współdzielonej. Twoja pamięć współdzielona zawsze będzie dostępna dla Androida, ponieważ teraz korzystamy z protokołu MTP.

Z tego powodu isExternalStorageAvailable() zwraca true, nawet jeśli twoja karta SD została usunięta.

+0

Plik rootsd = Environment.getExternalStorageDirectory(); może podać właściwy katalog, nie mogę teraz spróbować. Czy możesz powiedzieć, że nawet w 3 typie ścieżki urządzenia może istnieć bez karty? – weston

+0

W trzecim rodzaju getExternStorageDirectory() da ci "/ mnt/sdcard /", będzie istnieć, może zostać odczytany lub zapisany, nawet jeśli fizyczny sdcard zostanie usunięty. – pcans

+0

rzeczywiście z funkcją getExternalStorageDirectory() Dostaję ścieżkę "/ mnt/sdcard /" i aby dostać się do folderów muszę dodać "external_sd /", ale to daje mi problemy z czytaniem plików (zobacz inny problem). – Rik