Hirdetés

Alkalmazásfejlesztés badára: Fájlműveletek és a Media mappa

A mai bejegyzésben azt nézzük meg, hogy hogyan tudunk fájlokat mozgatni és másolni badában. Erre két módszer is van, az egyik az Osp::Io::File osztályt használja, a második pedig a direkt erre szakosodott ContentManagerUtil osztály segítségét hívja a művelethez.

Az Osp::Io::File osztály statikus törlő, másoló és mozgató függvényeket hív, a használata nagyon egyszerű, a függvények bemenő paraméterei magukért beszélnek, egyedül a Copy metódus boolean bemenője szorul némi magyarázatra. Ha igazra állítjuk a flaget, hibaüzenetet kapunk, ha a másolandó fájl már létezik a megadott helyen, hamis érték esetén nem foglalkozik az esetleges egyezéssel.

  • Copy(String &srcFilePathName, String &destFilePathName, boolean failIfExist)
  • Move (const Osp::Base::String &oldFilePathName, const Osp::Base::String &newFilePathName)
  • Remove (const Osp::Base::String &filePathName)

A File osztály metódusainak használatakor azonban komoly korlátokba ütközünk, ha a telefonon található, a médiatartalmakat összegyűjtő /Media mappába szeretnénk másolni, ezt ugyanis nem éri el az osztály. Persze ezt is meg lehet oldani, erre szolgál a ContentManagerUtil osztály. Itt két, fájlműveletekre használható funkciót kapunk:

  • CopyToMediaDirectory(Sting &srcPath, String &destPath)
  • MoveToMediaDirectory(String &srcPath, String &destPath)

A használat itt is elég egyszerű, előtte viszont nem szabad elfelejteni az <FContent.h> header include-olását, valamint a megfelelő privilégium (LOCAL_CONTENT) felvételét a manifest.xml-be. Ennyivel azonban még nem vagyunk meg, mert bár a fájlunk fizikailag már a /Media folderben lapul, a telefon fájlkezelőjében nem látjuk azt, ehhez be kell regisztrálnunk egy ContentManager példányon keresztül. Ehhez meg kell adnunk az erőforrásra jellemző információkat, amelyet automatikusan, a ContentManagerUtil::CheckContentType(String &Path) függvénnyel. Badában hat különböző tartalomtípiust különböztetünk meg, így az előbbi metódus által visszaadott típussal kell majd operálnunk, az annak megfelelő ContentType-pal kell meghívnunk a ContentManager osztál CreateContent() függvényét. A típusok a következők:

Osp::Content::ContentType enumeráció
ContentType Leírás Hozzá tartozó  Infó-osztály
CONTENT_TYPE_OTHER egyéb típus OtherContentInfo
CONTENT_TYPE_IMAGE képek ImageContentInfo
CONTENT_TYPE_AUDIO audió fájlok AudioContentInfo
CONTENT_TYPE_VIDEO videótartalmak VideoContentInfo
CONTENT_TYPE_UNKNOWN .exe fájlok OtherContentInfo

Innen már nincs más dolgunk, mint megvizsgálni, milyen tartalomtípussal van dolgunk, létrehozni egy neki megfelelő ContentInfo osztálypéldányt, amelynek a Construct() függvényébe meg kell adnunk a fájl elérési útját, végül meg kell etetnünk a ContentManager::CreateContent() függvényt a kapott ContentInfo egyeddel.

dr. Kind

Azóta történt

Előzmények