2011-06-27 21 views
15

downloadmanager.request enqueue setDestinationUri indir dosyalarını kullanıyorum.Dahili belleğe karşıdan yükleme mümkün mü?

Dosyaları, kalıcı olabileceği aygıtın dahili bellek konumuna karşıdan yüklemek mümkün mü?

Ben Android 3.1 Xoom cihazı kullanıyorum ve uygulama bize /mnt/ sdcard konumu için yazmasına olanak tanır ama gerçekten üzerinde bir işlevsel SD kart yok.

İndirilen dosyayı dahili belleğe depolamanın herhangi bir yolu?

TIA

+0

Bir petek cihazında/sdcard, dahili belleğe yazmıyor mu? İstediğin bu değil mi? – maxpower47

+2

Sanırım/mnt/sdcard dahili bellek olarak nitelendiriliyor. Bu konum için mutlak yol, Environment.getExternalStorageDirectory(). GetAbsolutePath() tarafından verilir ve dışsal –

+0

olduğu açıkça anlaşılır. Dediklerim, dahili 16'daki bir noktaya xoom (ve diğer HC aygıtları) haritası/sdcard'tır veya sdcard'ın bulunmasını bekleyen uygulamalar için bir geçici çözüm olarak 32GB bellek. Uygulamalara bir sdcard üzerinde, ama dahili olarak, aslında dahili flaşa yazılmış gibi görünüyor. – maxpower47

cevap

20

O DownloadManager bunu yapmak mümkün olacak olası değildir. Benim varsayımım, DownloadManager'ın işleminizde değil, sistem tarafından kontrol edilen başka bir süreçte çalışmasıdır. Dahili depolama konumları izin korumalıdır ve sağladığınız herhangi bir konum yalnızca uygulamanıza erişebilir.

İki seçeneğiniz var gibi görünüyor.

(1) "Harici" depolama biriminde bir dosya yolu sağlayın, tamamlandığında, dahili depolama birimine kopyalayın ve dosyayı harici depolama biriminde silin.

(2) DownloadManager'ın bu ContentProvider'a karşılık gelen bir URI'ye yazabileceği ve verebileceği bir ContentProvider oluşturun. Uyguladığınız ContentProvider, uygulamanızın bağlamında çalışacağından dosyayı dahili belleğe yazabilir.

+0

@cygnus - bu umut verici görünüyor. Denememe izin ver (2) ve iş parçacığı güncelleyecektir. Teşekkürler. 'ContentProvider' –

+2

+1: Seçenek 2'ye bir örnek verebilir misiniz? –

+2

@ cyngus'u öneren – RvdK