Android külső tároló: mi ez, adathordozó típusok és hogyan dolgozzunk vele fejlesztés során

Szerző: IT Sectr Megjelenés: 2026-03-13 Olvasási idő: 11 perc

A külső tároló mobileszközökön egy cserélhető adathordozó, amelyhez a megfelelő engedélyekkel rendelkező alkalmazások hozzáférhetnek. A Android Open Source Project, 2026 adatai szerint a Google az Android 10-től kezdve bevezette a Scoped Storage modellt, amely korlátozza a közvetlen hozzáférést a fájlrendszerhez, és a MediaStore API használatát követeli meg a közös médiafájlok kezeléséhez. Ez a megközelítés növeli a felhasználói adatok biztonságát és megakadályozza az információszivárgást az alkalmazások között.

Főbb pontok

  • External Storage — cserélhető tároló (SD-kártya, USB-OTG), amely különböző alkalmazások számára olvasható és írható
  • Scoped Storage Android 10+ korlátozza a közvetlen hozzáférést a fájlrendszerhez, és helyette a MediaStore API-t használja
  • iOS nem támogatja az SD-kártyákat — a külső fájlokhoz a Document Picker-en keresztül lehet hozzáférni
  • Engedélyek READ_EXTERNAL_STORAGE és WRITE_EXTERNAL_STORAGE kötelezőek Android 9 és az alatti verziókhoz
  • Formázás SD-kártya belső vagy hordozható tárolóként meghatározza a hozzáférési modellt és a titkosítást

Mi az a külső tároló mobileszközökön?

Külső tároló — olyan memóriaterület, amely nem része az alkalmazás védett homokozójának, és más programok számára is elérhető. Androidon ezen a kifejezésen általában SD-kártyát értenek, de a külső tárolóhoz tartoznak az OTG-adapteren keresztül csatlakoztatott USB-meghajtók és a fájlrendszer szintjén integrált felhőmeghajtók is. A fő különbség a belső tárolóval szemben az izoláció hiánya: a külső tárolóban lévő fájlokat bármely, a megfelelő engedélyekkel rendelkező alkalmazás olvashatja és módosíthatja.

Androidon a külső tároló két fő módban jelenik meg: hordozható (portable) és belső (adoptable). Az SD-kártya hordozható tárolóként történő formázásakor az cserélhető marad, és FAT32 vagy exFAT formátumba kerül formázásra. Adoptable storage módban a kártya ext4 formátumba kerül, és AES-128 titkosítással van ellátva, ezután a rendszer a belső memória kiterjesztéseként érzékeli. Az adoptable mód az Android 6.0 Marshmallow-tól érhető el, de a készülékgyártók gyakran kikapcsolják ezt a lehetőséget a saját rendszerképeikben. A Google Play Console statisztikái szerint csak az Android-eszközök körülbelül 12%-a támogatja az adoptable storage-t, ezért nem ajánlott kizárólag az SD-kártyán keresztüli belső memória-bővítésre hagyatkozni.

iOS-en nincsenek hagyományos SD-kártyák. Az Apple zárt architektúrát használ, ahol minden tárolás a belső flash memóriára és az iCloudra épül. Külső meghajtók a Lightning vagy USB-C porton keresztül támogatottak, de a hozzáférés korlátozott a rendszer Files fájlkezelőjére és azokra az alkalmazásokra, amelyek integrálódnak a Document Pickerrel. A felhasználó dönti el, mely fájlokat nyitja meg külső forrásból — az alkalmazás nem szkennelheti a csatlakoztatott meghajtót a felhasználó kifejezett beleegyezése nélkül.

Külső adathordozók típusai és jellemzőik

A külső adathordozó kiválasztása a sebességre, kapacitásra és hordozhatóságra vonatkozó követelményektől függ. A különböző adathordozó típusok eltérő sebességi jellemzőkkel, fájlrendszerekkel és használati forgatókönyvekkel rendelkeznek a mobilalkalmazásokban.

Adathordozó típusaMax. kapacitásOlvasási sebességFájlrendszer
SD UHS-I2 TBakár 104 MB/sexFAT / FAT32
SD UHS-II2 TBakár 312 MB/sexFAT / FAT32
USB 3.0 OTG2 TBakár 400 MB/sexFAT / NTFS / FAT32
USB-C SSD4 TBakár 1000 MB/sexFAT / APFS / NTFS

SD-kártyák és sebességosztályok

Az SD-kártyák írási sebesség szerint osztályozhatók: Class 10 (10 MB/s), U1 (10 MB/s), U3 (30 MB/s), V30 (30 MB/s) és V90 (90 MB/s). A 4K videó rögzítéséhez legalább U3 vagy V30 osztályú kártya szükséges. Nagy médiafájlokkal dolgozó mobilalkalmazásokhoz (fotófeldolgozás, videószerkesztés) U3 és magasabb osztályú kártyák használata ajánlott. A kártya sebessége közvetlenül befolyásolja az alkalmazás teljesítményét: a 4K videó Class 10 kártyára történő rögzítése képkockák kihagyását okozhatja az elégtelen átviteli sebesség miatt. SD-kártya kiválasztásakor ne csak a sebességosztályra figyeljen, hanem az Application Performance Class besorolásra is: az A1 és A2 a véletlenszerű olvasás és írás minimális teljesítményét jelzi, ami kritikus az adatbázisok és az alkalmazás-gyorsítótár működéséhez.

USB-OTG meghajtók

USB-OTG (On-The-Go) lehetővé teszi külső USB-meghajtók csatlakoztatását mobileszközökhöz adapteren keresztül. Az Android a 3.1-es verziótól támogatja az OTG-t, de a meghajtó csatlakoztatásához a fájlrendszert támogató kernel szükséges. A FAT32 és exFAT natívan támogatott, az NTFS csak egyedi kernellel rendelkező eszközökön vagy a Paragon könyvtáron keresztül érhető el. iOS-en az USB-meghajtók támogatása az iOS 13-mal jelent meg a Files alkalmazással együtt. A meghajtóval való munkához az alkalmazásnak a UIDocumentPickerViewController-et kell használnia, amely csak a felhasználó által kiválasztott fájlokhoz biztosít hozzáférést — az iOS nem biztosít teljes hozzáférést a meghajtó fájlrendszeréhez.

Felhőtároló mint kiterjesztés

A felhőszolgáltatások — iCloud, Google Drive, Dropbox — integrálódhatnak az eszköz fájlrendszerébe rendszer-szolgáltatókon keresztül. iOS-en az iCloud Drive az alkalmazás Sandbox-konténerének része, és a fájlok automatikusan szinkronizálódnak a felhasználó eszközei között. Androidon a Google Drive API-t biztosít a fájlok olvasásához és írásához, de közvetlen fájlrendszerbe csatlakoztatás nem történik. Nagy adatmennyiségekkel dolgozó mobilalkalmazások számára a felhőtároló alternatívát jelenthet az SD-kártyával szemben, különösen a bővítőhellyel nem rendelkező eszközökön.

Hogyan dolgozzunk külső tárolóval Androidon

A külső tárolóval való munka Androidon az operációs rendszer verziójától és a Scoped Storage modelltől függ. A fájlokhoz való hozzáférés folyamata eltér Android 9 és korábbi, Android 10–12 és Android 13+ esetén.

Hozzáférés MediaStore API-n keresztül

Android 10-től kezdve a közös médiafájlok elérésének fő módja a MediaStore API. Ez az API egységesített interfészt biztosít képek, videók és hangfájlok olvasásához és írásához a közös tárolóban. Az alkalmazásnak nincs szüksége READ_EXTERNAL_STORAGE engedélyre a saját fájljainak eléréséhez, de más alkalmazások fájljainak olvasásához továbbra is kifejezett felhasználói engedély szükséges. A MediaStore automatikusan indexeli a médiafájlokat, és ContentResolver-t biztosít a lekérdezésükhöz.

kotlin
val collection = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL_PRIMARY)
} else {
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI
}

val projection = arrayOf(
    MediaStore.Images.Media._ID,
    MediaStore.Images.Media.DISPLAY_NAME
)

val cursor = contentResolver.query(collection, projection, null, null, null)

A lekérdezés végrehajtása után egy Cursor objektumot kap, amely a fájlok URI-jait tartalmazza. A fájl olvasásához nyisson InputStream-et a contentResolver.openInputStream(uri) segítségével. Az írás hasonlóan történik a contentResolver.openOutputStream(uri) használatával. A MediaStore automatikusan kezeli a névütközéseket, és lehetőséget biztosít új fájlok beszúrására a contentResolver.insert(uri, values) segítségével, amely visszaadja a létrehozott fájl URI-ját.

Munka tetszőleges fájlokkal SAF-en keresztül

Storage Access Framework (SAF) — az ajánlott mód tetszőleges fájlok elérésére Android 10+-on. A SAF rendszerfájl-választó párbeszédpanelt biztosít, amelyen keresztül a felhasználó hozzáférést ad az alkalmazásnak egy adott fájlhoz vagy könyvtárhoz. Az alkalmazás egy hozzáférési URI-t kap, amely az eszköz újraindításáig vagy az engedély kifejezett visszavonásáig a beállításokban érvényes. A SAF nem igényel READ_EXTERNAL_STORAGE vagy WRITE_EXTERNAL_STORAGE engedélyeket, ami leegyszerűsíti a Google Play-en való közzétételt és csökkenti az engedélykérések számát.

kotlin
val requestCode = 42
val intent = Intent(Intent.ACTION_OPEN_DOCUMENT_TREE)
intent.addFlags(
    Intent.FLAG_GRANT_READ_URI_PERMISSION
        or Intent.FLAG_GRANT_WRITE_URI_PERMISSION
)
startActivityForResult(intent, requestCode)

Hogyan dolgozzunk külső tárolóval iOS-en

iOS-en a külső fájlokkal való munka a UIDocumentPickerViewController-en keresztül történik, amelyet a felhasználó nyit meg bizonyos fájlok vagy könyvtárak kiválasztásához. Az alkalmazásnak nincs közvetlen hozzáférése a külső meghajtó fájlrendszeréhez — csak azokhoz a fájlokhoz, amelyeket a felhasználó kifejezetten kiválasztott. A fájl kiválasztása után az alkalmazás egy ideiglenes URL-címet kap a Sandbox-konténerben, és a FileManager-en keresztül dolgozhat a fájllal.

UIDocumentPickerViewController használata

UIDocumentPickerViewController lehetővé teszi a felhasználó számára, hogy egy vagy több fájlt válasszon ki bármely elérhető forrásból: iCloud Drive, csatlakoztatott USB-meghajtó, külső felhőszolgáltatás. A kiválasztás után a vezérlő visszaad egy URL-tömböt, amelyet az alkalmazás a munkamenet során olvashat. A hozzáférés megőrzéséhez az alkalmazás bezárása után meg kell hívni a startAccessingSecurityScopedResource() metódust, és el kell menteni a security-scoped könyvjelzőt a UserDefaults-ba.

swift
let picker = UIDocumentPickerViewController(
    forOpeningContentTypes: [.data, .image],
    asCopy: true
)
picker.delegate = self

func documentPicker(
    controller: UIDocumentPickerViewController,
    didPickDocumentsAt urls: [URL]
) {
    guard let url = urls.first else { return }
    let data = try Data(contentsOf: url)
}

A asCopy: true paraméter azt jelenti, hogy az iOS átmásolja a fájlt az alkalmazás Sandbox-konténerébe, és az alkalmazás saját másolatot kap, amely független az eredeti fájltól. Ha az asCopy: false értéket adja meg, az alkalmazás hivatkozást kap az eredeti fájlra, de a hozzáféréshez meg kell hívni a url.startAccessingSecurityScopedResource() metódust. Ennek a hívásnak a hiányában a fájl olvasása kivételt dob. A fájllal végzett munka befejezése után hívja meg a url.stopAccessingSecurityScopedResource() metódust az erőforrás lezárásához és a leírók szivárgásának megelőzéséhez.

Külső tároló korlátozásai és biztonsága

A külső tároló biztonsága alacsonyabb, mint a belső tárolóé, mivel a fájlok más alkalmazások számára is elérhetők. Bármely, READ_EXTERNAL_STORAGE engedéllyel rendelkező alkalmazás elolvashatja az SD-kártyán lévő összes fájlt, beleértve azokat is, amelyeket az Ön alkalmazása hozott létre ideiglenes bizalmas adatok tárolására. Egy rosszindulatú alkalmazás átvizsgálhatja az SD-kártyát, és kinyerheti a felhasználói adatokat, ha azok nincsenek titkosítva. Ezért kategorikusan nem ajánlott hitelesítési tokeneket, jelszavakat vagy személyes adatokat tárolni a külső tárolón titkosítatlan formában.

Android 10+-on a Scoped Storage jelentősen korlátozza az alkalmazások hozzáférését a közös fájlrendszerhez. Az alkalmazás engedély nélkül csak a saját maga által létrehozott fájlokat olvashatja, más alkalmazások fájljaihoz pedig a felhasználó kifejezett hozzájárulása szükséges SAF-párbeszédablakon keresztül. Ez a korlátozás azonban nem vonatkozik azokra az alkalmazásokra, amelyek cél SDK-verziója 29 alatti — ezek továbbra is a régi modell szerint működnek, ami kockázatot jelent a nem frissített alkalmazásokat használó felhasználók számára. A Google Play 2021 óta megköveteli a targetSdkVersion 29+ alkalmazását minden új és frissített alkalmazás esetében.

Formázás és titkosítás — egy másik fontos biztonsági szempont. A hordozható tárolóként formázott SD-kártya alapértelmezés szerint nincs titkosítva a rendszer által. Még adoptable storage használata esetén is a titkosítás csak akkor aktiválódik, ha a készülék gyártója engedélyezte ezt a lehetőséget a rendszerképben. A külső tárolón tárolt bizalmas adatok védelméhez használja az EncryptedFile könyvtárat az AndroidX Security-ból, amely minden fájlt külön titkosít AES256-GCM használatával, függetlenül a rendszer szintű titkosítástól.

Javaslatok a külső tároló használatához

A külső tároló hatékony használata egyensúlyt igényel az adatok elérhetősége és biztonsága között. Kövesse az alábbi szabályokat a felhasználói fájlok megbízható tárolásának biztosításához.

  • Ne tároljon bizalmas adatokat a külső tárolón titkosítás nélkül. Használja az EncryptedFile vagy EncryptedSharedPreferences fájlt tokenek, jelszavak és személyes adatok védelméhez
  • Ellenőrizze a külső tároló elérhetőségét írás előtt: használja a Environment.getExternalStorageState() metódust az SD-kártya állapotának ellenőrzéséhez. A kártya eltávolítható, megsérülhet vagy írásra nem elérhető lehet
  • Használja a Scoped Storage-t Android 10+-on és a SAF-ot a közös fájlok eléréséhez. Ez csökkenti a kért engedélyek számát és javítja a felhasználói élményt
  • Mindig kezelje a kivételeket a külső tárolóval való munka során. A fájlt egy másik alkalmazás törölheti vagy áthelyezheti olvasás közben, ami FileNotFoundException kivételt eredményez
  • Figyelmeztesse a felhasználót nagy adatmennyiségek külső tárolóra írása előtt. Jelenítsen meg megerősítő párbeszédpanelt, és adjon lehetőséget a könyvtár kiválasztására SAF-en keresztül

Fontos megjegyezni, hogy a külső tároló nem garantálja az adatok biztonságát meghibásodás esetén. Az SD-kártyák korlátozott újraírási ciklusokkal rendelkeznek, különösen az olcsóbb Class 4 és Class 6 modellek. Intenzív írás esetén (például naplózás vagy adatfolyamok gyorsítótárazása) a kártya néhány hónapon belül meghibásodhat. Az ilyen forgatókönyvekhez használja a belső memóriát vagy a felhőtárolót, a külső tárolón pedig csak olyan fájlokat tároljon, amelyek elvesztését a felhasználó elfogadhatónak tartja. Rendszeresen ellenőrizze az SD-kártya állapotát a StatFs segítségével, és tájékoztassa a felhasználót a fájlrendszer kritikus hibáiról.

Gyakran ismételt kérdések

Szükséges-e engedély a külső tároló eléréséhez Android 13-on?

Android 13+ rendszeren a READ_EXTERNAL_STORAGE engedélyt részletesebbek váltották fel: READ_MEDIA_IMAGES, READ_MEDIA_VIDEO és READ_MEDIA_AUDIO. Más típusú fájlok eléréséhez használja a SAF-ot.

Lehet az SD-kártyát belső memóriaként formázni?

Igen, az adoptable storage funkció Android 6.0+-tól érhető el. A kártya ext4 formátumba kerül AES-128 titkosítással. Azonban sok gyártó kikapcsolja ezt a lehetőséget, és az eszközök körülbelül 88%-a nem támogatja az adoptable storage-t.

Hogyan ellenőrizhető, hogy az SD-kártya be van-e helyezve az eszközbe?

Használja az Environment.getExternalStorageState() metódust, amely egy állapotkarakterláncot ad vissza. A MEDIA_MOUNTED érték azt jelenti, hogy a kártya olvasásra és írásra elérhető. Más értékek hibát vagy a kártya hiányát jelzik.

Mi a különbség a Scoped Storage és a teljes fájlrendszer-hozzáférés között?

Scoped Storage az alkalmazást saját konténerére és a közös MediaStore médiatárakra korlátozza. A teljes hozzáférés lehetővé teszi bármely fájl olvasását az eszközön. A Scoped Storage növeli a felhasználói adatok biztonságát, és kötelező az új alkalmazások számára.

Hogyan kaphatok URI-t az SD-kártyán lévő fájl eléréséhez SAF-en keresztül?

Indítson Intent-et az ACTION_OPEN_DOCUMENT_TREE művelettel, amely megnyitja a rendszer könyvtárválasztó párbeszédablakát. A kiválasztás után egy URI-engedélyt kap, amely az újraindításig érvényes. Mentse el ezt az URI-t a SharedPreferences-be későbbi használatra.

Összegzés

  • External Storage — cserélhető tároló (SD-kártya, USB-OTG), amely a megfelelő engedélyekkel rendelkező alkalmazások számára elérhető
  • Scoped Storage Android 10+ korlátozza a közvetlen hozzáférést a fájlrendszerhez, és bevezeti a MediaStore API-t a médiafájlokhoz
  • iOS nem támogatja az SD-kártyákat — a külső fájlokhoz csak UIDocumentPickerViewController-en keresztül lehet hozzáférni
  • SD-kártyák sebességosztályokba sorolhatók: Class 10, U1, U3, V30, V90 — a 4K videó rögzítéséhez minimum U3 szükséges
  • A külső tároló biztonsága alacsonyabb, mint a belső tárolóé — titkosítsa a bizalmas adatokat írás előtt
  • Adoptable storage lehetővé teszi az SD-kártya használatát a belső memória kiterjesztéseként, de csak az eszközök 12%-a támogatja
  • Ajánlott a SAF használata tetszőleges fájlok eléréséhez, és ne tároljon kritikus adatokat titkosítás nélkül

Kulcsrakész mobilalkalmazást fejlesztünk

Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.

Projekt megbeszélése

Olvassa el is