2011-11-24 4 views
1

가능한 복제를 이미지를 표시하는 갤러리를 여는 방법 :
Gallery with folder filter특정 디렉토리에

내 애플은 SDCARD에있는 디렉토리에 사진을 생성하고 나는 그것을 위해 갤러리를 열고 자. 이를 위해 다음과 같이하면됩니다 :

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("image/*"); 
    startActivity(intent); 

그러나 장치의 모든 그림이 표시됩니다. 디렉토리에 파일 만 표시 할 수 있습니까?

+0

http://stackoverflow.com/questions/6074270/built-in-gallery-in-specific-folder 같은 반복 질문입니다. –

답변

2

활동에 MediaScannerConnectionClient를 구현하기 만하면 해당 폴더 이름 안에있는 파일 중 하나의 정확한 경로를 SCAN_PATH로 지정해야합니다. 그러면 해당 폴더에 들어있는 모든 파일을 검색하여 내부에서 엽니 다. 갤러리에 내장. 폴더의 이름을 지정하면 비디오를 포함한 모든 파일을 가져올 수 있습니다. 열려는 경우에만 이미지가

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

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/youfoldername/"); 
    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()+"/yourfoldername/"+allFiles[0]; 
    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); 
     if (uri != null) 
     { 
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setData(uri); 
     startActivity(intent); 
     } 
     } finally 
     { 
     conn.disconnect(); 
     conn = null; 
     } 
     } 
} 

FILE_TYPE="images/*" 내가 이미이 링크도 Built-in gallery in specific folder에 대답 변경합니다.

+0

이 줄은 작동하지 않습니다. conn = new MediaScannerConnection (this, this); 2 번째 인수를 MediaScannerConnectionClient에 캐스트 할 수 없습니다. – nonozor

+0

@nonozor 두 번째는 MediaScannerConnectionClient에 속하며, 활동에 MediaScannerConnectionClient를 구현하는 경우이 (이)를 적용 할 수 있습니다. – PiyushMishra

+1

이것은 그림 중 하나를 열 뿐이지 만 디렉토리에 그림의 개요를 보여주는 갤러리는 아닙니다 ..... –

관련 문제