2010-04-13 29 views
8

Bir ACTION_SEND amacı aracılığıyla Android Galeri'den bir görüntü almaya çalışıyorum. Uygun niyet filtrelerini ayarladım ve Galeri uygulamasını açıyor. Şimdi görüntü verilerine nasıl ulaşılacağını bilmek istiyorum. İnternette bunun nasıl yapıldığına dair bir örnek bulamıyorum. Yolun intent.getData() 'da bir yerde olduğunu ancak galeriden bu resmi tam olarak nasıl çekerim? Eğer 5+ megapiksel dosyalarla çalışmak olabilir -Galeriden ACTION_SEND amacı alma

Uri selectedImage = intent.getData(); 
    AssetFileDescriptor fd = getContentResolver() 
      .openAssetFileDescriptor(selectedImage, "r"); 
    FileInputStream s = fd.createInputStream(); 
    // your image data processing code here 

Ancak dikkatli olun: GÖNDER niyet konusunda emin ama bir fotoğraf için Mediastore için PICK niyet dönüşleri tutarken, şöyle birşeyler gider değil

cevap

15

Bunu Picasa kaynağında bulundu. Resmin uygun yolunu verir.

Intent intent = getIntent(); 
    if (Intent.ACTION_SEND.equals(intent.getAction())) { 
     Bundle extras = intent.getExtras(); 
     if (extras.containsKey(Intent.EXTRA_STREAM)) { 
      Uri uri = (Uri) extras.getParcelable(Intent.EXTRA_STREAM); 
      String scheme = uri.getScheme(); 
      if (scheme.equals("content")) { 
       String mimeType = intent.getType(); 
       ContentResolver contentResolver = getContentResolver(); 
       Cursor cursor = contentResolver.query(uri, null, null, null, null); 
       cursor.moveToFirst(); 
       String filePath = cursor.getString(cursor.getColumnIndexOrThrow(Images.Media.DATA)); 
+0

Bu dosyada hangi dosyada ve hangi dosyada bulunur. –

0

oldukça büyük olabilir (özellikle bunları işlemek için bitmap'lere açıyorsanız) ve belleğiniz oldukça sınırlıdır.