2012-09-25 11 views
16

aracılığıyla nasıl açılır Daha önce "privat" dosya sisteminde saklanan bir dosyayı nasıl açabilirim? Dosya bir web servisi tarafından indirilmekte ve yerel fs üzerinde saklanmalıdır. Dosyayı bir Intent (Action_View) aracılığıyla açmaya çalışırken "garip" bir hata alıyorum. Dosya dosya sisteminde mevcut olsa da (dosyayı dosya yöneticisinde emülatör/eclipse'de gördü), başlatılan arama galerisi etkinliğinde gösterilmez. Resim yerine galeride, içeride olmayan bir siyah ekran görüntülenir (eylem çubuğu hariç). Aynı yöntem, bu yöntemle bir pdf/film/mp3 dosyası açmaya çalışırken de meydana gelir (pdf örneğin dosyanın bozuk olduğunu belirtir). Android'de bir dosya bir Intent

BTW: Yerel fs üzerinde depolanmış verileri (bozuk değil) geçerlidir, ben ayıklananları (çekme yöntemiyle) indirilen dosyalar ve dosyalar ... benim iş istasyonunda açılabilir

public void onAttachment(Context context, Attachment attachment) { 
    try { 
     //Attachment is a structured data object that contains of a byte[], filename and mimetype (like image/jpeg) 
     FileOutputStream fos = FileOutputStream fos = context.openFileOutput(attachment.getAttachmentFileName(), Context.MODE_PRIVATE); 
     fos.write(attachment.getBinary()); 
     fos.flush(); 
     fos.close(); 
     File f = context.getFileStreamPath(attachment.getAttachmentFileName()); 
     Uri uri = Uri.fromFile(f);   
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(uri,attachment.getAttachmentMimetype()); 
     context.startActivity(intent);     
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
}   
+0

belki http://stackoverflow.com/questions/11068648/launching-an-intent-for-file -ve-MIME tipi/11088980 # 11088980 yardımcı olabilir. – ademar111190

cevap

2

Konumu "openFileOutput("fileName", Activity.MODE_WORLD_READABLE)" olarak ayarlarken işe yarayacaktır. Diğer uygulamalar "Context.MODE_PRIVATE"

görmeye ayarlarken saklanan (hatta görüntüleme için) verileri okuyamaz other post on stackoverflow

12

Kodunuzda ek türü nedir? Belki yanlış mime türü döndürür?

Bu kod benim için çalışıyor:

File file = new File("EXAMPLE.JPG"); 

// Just example, you should parse file name for extension 
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".JPG"); 

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(file), mime); 
startActivityForResult(intent, 10); 
+0

Hayır, bu işe yaramaz ... Sorun, etkinliğin başarıyla başlatıldığı (galeri, film/ses oynatıcı, pdf-okuyucu) ama içerik (dosya) geçersiz görünüyor ... –

+0

Doğru mimetype, aksi takdirde doğru aktivite (Galery/Mediaplayer/PDF-Reader) başlatılamayacaktı. –

+0

Yanlış. GetMimeTypeFromExtension parametresi, '' olmadan 'bir dosya uzantısı OLMALIDIR. – armandooj

2

yapabilirsiniz böyle değil sdcard bulunmayan açık dosyaları. Dosyayı sdcard'a kopyalayıp açmanız gerekir.

+0

Bunun bana google tarafından onaylandığı bir bağlantı verebilir misiniz (sdk belgelerinde). Resmi belgelerdeki hiçbir şey bulamadım ... BTW: Dosyayı görüntülerini işleyebilen kendi aktivitesinde açtığımda, ... –

+0

Ne yazık ki deneyimden bahsediyorum. bir bağlantınız var. AMA, SDCARD içinde olmayan bir dosya yükleme veya e-posta ile aynı sorun ... Aynı webview sayfaları & etc açılması ile aynı ... Umarım yardımcı olur ... – Givi

+0

Kendi Görüntüleyici yazmak zorundayım - Bu özel klasörde saklanan dosyaları işleyebilecek "Etkinlikler"? –

İlgili konular