2012-05-25 17 views
6

Sto cercando il codice seguente per aprire l'app della galleria Android di default. Apre tutte le cartelle di immagini sotto sdcard. Come posso aprire solo una cartella particolare?Come aprire una cartella particolare dalla galleria in 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

Ci sono altre risposte a questa domanda su http://stackoverflow.com/questions/13418807/how-can-i-display-images-from-a-specific-folder-on-android-gallery – ShawnFeatherly

risposta

7

Ciao Si prega di utilizzare questo codice seguente. otterrai un'immagine cartella particolare.

codice:

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; 
     } 
     } 
} 

Spero che questo vi aiuterà.

+0

Lavoro eccellente . – Santhosh

+0

È possibile richiamare l'opzione di condivisione nella galleria da questo codice? – Santhosh

+0

Esiste un modo per richiamare l'opzione di condivisione su un'immagine che appartiene alla mia particolare directory dal nostro programma? – Santhosh

Problemi correlati