2012-05-25 12 views
6

Estoy usando el siguiente código para abrir la aplicación de galería predeterminada de Android. Abre todas las carpetas de imágenes bajo sdcard. ¿Cómo puedo abrir solo una carpeta en particular?¿Cómo abrir una carpeta en particular de la galería en Android?

Intent intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
    intent.setType("image/*"); 
    startActivityForResult(Intent.createChooser(intent, "Pick any photo"), SELECT_IMAGE_FROM_GALLERY_CONSTANT); 
+0

Hay más respuestas a esta pregunta en http://stackoverflow.com/questions/13418807/how-can-i-display-images-from-a-specific-folder-on-android-gallery – ShawnFeatherly

Respuesta

7

Hola Utilice este código. Obtendrás una imagen de carpeta particular.

código:

import java.io.File; 
import android.app.Activity; 
import android.content.Intent; 
import android.media.MediaScannerConnection; 
import android.media.MediaScannerConnection.MediaScannerConnectionClient; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 



public class SDCARD123Activity extends Activity implements MediaScannerConnectionClient{ 
    public String[] allFiles; 
private String SCAN_PATH ; 
private static final String FILE_TYPE="image/*"; 

private MediaScannerConnection conn; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    File folder = new File("/sdcard/Photo/"); 
    allFiles = folder.list(); 
// uriAllFiles= new Uri[allFiles.length];   
    for(int i=0;i<allFiles.length;i++) 
    { 
     Log.d("all file path"+i, allFiles[i]+allFiles.length); 
    } 
    // Uri uri= Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/yourfoldername/"+allFiles[0])); 


    SCAN_PATH=Environment.getExternalStorageDirectory().toString()+"/Photo/"+allFiles[0]; 
    System.out.println(" SCAN_PATH " +SCAN_PATH); 

    Log.d("SCAN PATH", "Scan Path " + SCAN_PATH); 
    Button scanBtn = (Button)findViewById(R.id.scanBtn); 
    scanBtn.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     startScan(); 
    }}); 
    } 
    private void startScan() 
    { 
    Log.d("Connected","success"+conn); 
    if(conn!=null) 
    { 
    conn.disconnect(); 
    } 
    conn = new MediaScannerConnection(this,this); 
    conn.connect(); 
    } 
@Override 
public void onMediaScannerConnected() { 
    Log.d("onMediaScannerConnected","success"+conn); 
    conn.scanFile(SCAN_PATH, FILE_TYPE);  
} 
@Override 
public void onScanCompleted(String path, Uri uri) { 
    try { 
     Log.d("onScanCompleted",uri + "success"+conn); 
     System.out.println("URI " + uri);    
     if (uri != null) 
     { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(uri); 
     startActivity(intent); 
     } 
     } finally 
     { 
     conn.disconnect(); 
     conn = null; 
     } 
     } 
} 

Hope esto le ayudará.

+0

Excelente trabajo . – Santhosh

+0

¿Es posible invocar la opción de compartir en la galería desde este código? – Santhosh

+0

¿Hay alguna manera de invocar la opción de compartir en una imagen que pertenece a mi directorio particular de nuestro programa? – Santhosh

Cuestiones relacionadas