Problem med att skriva till SD kort

Diskussion i 'Frågor, support och diskussion' startad av UncleRedz, 21 feb 2012.

  1. UncleRedz

    UncleRedz Kid Droid Medlem

    Blev medlem:
    7 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    5

    MINA ENHETER

    Hej,

    Jag håller på att skriva en app som behöver skriva filer till MicroSD/SD kort, men har stött på endel problem.

    Av vad jag förstått så är Androids stöd för multipla lagringsplatser något begränsat, då API'erna bara ger en information om den första lagringsplatsen, vilket är det interna lagrinsplatsen på många nyare enheter.

    Olika tillverkare har löst detta på olika sätt, endel så som Motorola har gjort ett extra API för att hitta SD kortet, endel länkar SD kortet till filsystemet för den interna lagringsplatsen osv. Men i vilket fall så kan man komma åt SD kortet via /mnt/<någonting> iallafall.

    Mount points
    -------------------

    /mnt/sdcard - Primary "external" storage
    /mnt/sdcard-ext - Secondary external storage (Motorola)
    /mnt/sdcard2 - Secondary external storage (HTC, Sony, Toshiba AT200)
    /mnt/sdcard/external_sd - Primary->Secondary storage compatibility (Some manufacturers)

    /mnt/usb_storage - USB Storage (Acer)
    /mnt/USBDrive1 - USB Storage (Asus Transformer)
    /mnt/USBDrive2 - USB Storage (Asus Transformer)
    /mnt/usb0/part0 - USB Storage (Toshiba AT200)


    Problemet som jag har nu är att min applikation kan läsa och skriva till den interna lagringsplatsen (/mnt/sdcard) men när jag försöker komma åt MicroSD kortet så kan jag bara läsa (/mnt/sdcard2) men inte skriva. Om jag skriver till MicroSD kortet så får jag permisson denied. (Detta trotts att jag har lagt till WRITE_EXTERNAL_STORAGE.)

    Jag har testat detta på Toshiba AT200 och det störiga är att den inbygda File Managern som följer med plattan kan läsa och skriva till MicroSD kortet utan problem, medan de 3rd party applikationer jag provat, inklusive min app, bara kan läsa.

    Hur är det på andra plattor? Är det någon som provat? Det borde väl gå alldeles utmärkt att skriva till SD/MicroSD kortet?
     
  2. UncleRedz

    UncleRedz Kid Droid Medlem

    Blev medlem:
    7 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    5

    MINA ENHETER

    Efter lite mer efterforskning så verkar detta vara ett känt problem.

    Med Android 3.1 och tidigare så räckte det med WRITE_EXTERNAL_STORAGE rättigheten för att skriva till både interna och externa lagringsplatsen. Men från och med 3.2 så ändrades skrivrättigheterna för den externa lagringsplatsen (MicroSD/SD kortplatsen) och WRITE_EXTERNAL_STORAGE ger inte längre skrivrättigheter till SD kortet.

    Utvecklare hänvisas istället till att använda MediaStore API'et, istället för att direkt accessa SD kortet, vilket kanske inte är en helt fullvärdig ersättare för att faktiskt ha tillgång till SD kortet. Men man ska tydligen kunna använda WRITE_MEDIA_STORAGE rättigheten för att får skrivaccess till SD kortet. (Ska prova detta senare och se om det fungerar.)

    Edit: Har precis provat och det fungerar inte.
     
    Last edited: 21 feb 2012
  3. nadam

    nadam Youth Droid Medlem

    Blev medlem:
    10 feb 2010
    Inlägg:
    182
    Mottagna gillanden:
    31
    Operatör:
    Hallon
    Telefon:
    Sony Xperia XZ1 Compact

    MINA ENHETER

    Operatör:
    Hallon
    Telefon:
    Sony Xperia XZ1 Compact
    Menar du att appen ska kräva SD-kort och alltså inte fungera på exempelvis Nexus S och Galaxy Nexus?
     
  4. UncleRedz

    UncleRedz Kid Droid Medlem

    Blev medlem:
    7 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    5

    MINA ENHETER

    Har inte undersökt vad Google gjort med dom här sakerna i ICS, men i 3.2 så är det på det viset. Dvs tidigare så mountades SD kortet till "sdcard_rw" som mappas till WRITE_EXTERNAL_STORAGE rättigheten. Men sedan 3.2 så mountas SD kortet till "media_rw" som mappas till WRITE_MEDIA_STORAGE rättigheten. Dock verkar det som om vanliga applikationer inte kan begära den rättigheten.

    Och med SD kort så menar jag det verkliga fysiska SD kortet och inte den interna lagringsplatsen som också ibland heter SDCard. Den interna lagringsplatsen är fortfarande mountad som "sdcard_rw".
     
  5. nadam

    nadam Youth Droid Medlem

    Blev medlem:
    10 feb 2010
    Inlägg:
    182
    Mottagna gillanden:
    31
    Operatör:
    Hallon
    Telefon:
    Sony Xperia XZ1 Compact

    MINA ENHETER

    Operatör:
    Hallon
    Telefon:
    Sony Xperia XZ1 Compact
    Jag syftade mer på att dessa telefoner inte har stöd för SD-kort. Spelar ingen roll vilken version av Android du kör då.

    Verkar skumt att begränsa sig bara till telefoner som har SD-kort, men det beror förstås på vad det är för app.
     
  6. UncleRedz

    UncleRedz Kid Droid Medlem

    Blev medlem:
    7 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    5

    MINA ENHETER

    Ah, då förstår jag vad du menar. Appen är för tablets enbart och den kräver inte SD kort, men om plattan har SD kort så vill jag stödja det fullt ut eftersom stora mängder data kommer skrivas och då vore det bättre om man kan använda ett stort SD kort för lagring än en begränsad intern lagring.

    Men det verkar som om Google avser att man inte skall använda SD kortet till annat än att konsumera data som kopierats dit från en dator, vilket är väldigt knepigt tänkt.
     
  7. nadam

    nadam Youth Droid Medlem

    Blev medlem:
    10 feb 2010
    Inlägg:
    182
    Mottagna gillanden:
    31
    Operatör:
    Hallon
    Telefon:
    Sony Xperia XZ1 Compact

    MINA ENHETER

    Operatör:
    Hallon
    Telefon:
    Sony Xperia XZ1 Compact
    Sant, jag hade helt missat denna problematik i Honeycomb. Riktigt uselt av Google. Antar att tanken är att tablets och nya telefoner ska ha tillräckligt med inbyggd external storage.

    Du kan inte komprimera din data eller på annat sätt minska mängden så det räcker i alla fall?
     
  8. UncleRedz

    UncleRedz Kid Droid Medlem

    Blev medlem:
    7 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    5

    MINA ENHETER

    Det rör sig om bild data som redan är komprimerad och det kan lätt bli upp till 20-30 GB, något som en netbook hanterar utan problem idag, men vilket kan bli lite svårt för en platta om man inte kan dra nytta av extra minneskort osv.
     
  9. UncleRedz

    UncleRedz Kid Droid Medlem

    Blev medlem:
    7 jun 2009
    Inlägg:
    63
    Mottagna gillanden:
    5

    MINA ENHETER

    Helt otroligt, efter ytterligare läsande (http://forums.toshiba.com/t5/THRiVE...ter-update-from-3-1-to-3-2/td-p/238836/page/4) så visar det sig att man kan komma runt det här problemet på ett relativt enkelt sätt.

    Om man formaterar om SD kortet till exFAT istället för det vanliga FAT32, så blir kortet mountat med andra rättigheter och vips så fungerar det igen.

    By design eller lycklig slump? Och fungerar det på alla tablets eller bara Toshiba?