2012-03-06 23 views
12

Sto cercando di ottenere un'immagine utilizzando la galleria integrata. Funziona bene nell'emulatore e apre solo una galleria ma su un dispositivo reale mi dà più scelte, uno di loro è il file manager che mi permette di scegliere qualsiasi tipo di file, anche i file apk, naturalmente l'arresto dell'app dopo questo Ho questo codiceAndroid ottiene solo l'immagine dalla galleria

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    Intent intent = new Intent(); 
    intent.setType("image/*"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 
} 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 


    if (resultCode == RESULT_OK) { 


    switch(requestCode){  

     case SELECT_PICTURE: 
       Uri selectedImageUri = data.getData(); 


      break; 
     } 
     } 

}

+0

Disinstallare il file manager, in quanto è chiaramente un pezzo di spazzatura. Detto questo, StackOverflow è per domande di programmazione, e questa non è una domanda. – CommonsWare

+1

Mi sembra che la sua domanda sia "Come posso consentire all'utente di selezionare una foto utilizzando la galleria con un intento." – FoamyGuy

risposta

24

tenta di utilizzare

.... 
    Intent intent = new Intent(Intent.ACTION_PICK); 
    intent.setType("image/*"); 
    startActivityForResult(intent, SELECT_PICTURE); 
.... 
+1

Grazie a questo è stato molto utile – mrl25

+2

L'app per Android 4.4 Foto non ne tiene conto. –

+0

L'unica risposta. Ho cercato per un sacco di tempo - il mio errore era impostare intent.setAction (Intent.ACTION_GET_CONTENT); Molti androidi mi offrono la possibilità di scegliere tra tali app, come google drive, viber photoes, ma non riesco a scovare uri. Grazie per la tua risposta, sicuro che tutte le gallerie standard dovrebbero gestirlo correttamente (ho controllato su 4 telefoni) –

1

Prova usando questo per il vostro intento:

Intent intent = new Intent(Intent.ACTION_PICK,android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
startActivityForResult(Intent.createChooser(intent,"Select Picture"), SELECT_PICTURE); 

Se si vogliono utilizzare sempre il magazzino Galleria Application I don' che avete bisogno di utilizzare uno Scelta Intent per cui si potrebbe essere in grado di cambiare il tuo startActivity a questo:

startActivityForResult(intent, SELECT_PICTURE); 
5
public void ChoosePicture(View v) { 
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK); 
    photoPickerIntent.setType("image/*"); 
    startActivityForResult(photoPickerIntent, 1); 
} 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    switch (requestCode) { 
    case 1: 
    { 
     if (resultCode == RESULT_OK) 
     { 
     Uri photoUri = data.getData(); 
     if (photoUri != null) 
     { 
     try { 
       String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
       Cursor cursor = getContentResolver().query(photoUri, filePathColumn, null, null, null); 
       cursor.moveToFirst(); 
       int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
       String filePath = cursor.getString(columnIndex); 
       cursor.close(); 
       bMap_image = BitmapFactory.decodeFile(filePath); 
       ImageView img = (ImageView) findViewById(R.id.gallery1); 
       img.setImageBitmap(bMap_image); 


    }catch(Exception e) 
     {} 
     } 
    }// resultCode 
    }// case 1 
    }// switch, request code 
}// public void onActivityResult 

mmh, in qualche modo ha cambiato la posizione dei miei ultimi "}".

Questo codice consente di selezionare un'immagine dalla galleria e quindi mostrarla su una vista di immagini.

Io uso questo codice sul mio dispositivo e funziona come un incantesimo.

Problemi correlati