2010-04-13 35 views
8

Próbuję odebrać obraz z Galerii Androida za pośrednictwem intencji ACTION_SEND. Ustawiłem odpowiednie filtry zamiarów, a Galeria otworzy moją aplikację. Teraz chcę wiedzieć, jak uzyskać dane obrazu. Nie mogę znaleźć żadnych przykładów w Internecie, jak to zrobić. Sądzę, że ścieżka znajduje się gdzieś w intent.getData(), ale jak dokładnie mogę pobrać ten obraz z galerii?Odbieranie intencji ACTION_SEND z galerii

Odpowiedz

15

Znaleziono to w źródle Picasy. Daje właściwą ścieżkę obrazu.

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

W jakim pliku i gdzie w tym pliku ma zostać umieszczony. –

0

Nie wiesz o zamiarze wysłania, ale podczas przenoszenia zysków z zamiarów Kostka do Mediastore o zdjęcie, to idzie mniej więcej tak:

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

Bądź jednak ostrożny - można pracować z plikami megapikselowych 5+ , które może być dość duże (szczególnie jeśli rozpakowujesz je do bitmap do przetworzenia), a twoja pamięć jest dość ograniczona.

Powiązane problemy