2011-11-24 66 views
1

可能重複:
Gallery with folder filter如何打開畫廊顯示圖像在一個特定的目錄

我的應用程序在SD卡的目錄中創建的照片,我想開畫廊吧。要做到這一點,我只需做到以下幾點:

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的確切路徑,並且它將掃描該文件夾中包含的所有文件並將其打開建在畫廊。所以只需給出你的文件夾的名稱,你就會得到包括視頻在內的所有文件。如果你想打開僅適用於圖像改變FILE_TYPE="images/*"

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

我已回答了這個鏈接也Built-in gallery in specific folder上。

+0

它不起作用,這一行:conn = new MediaScannerConnection(this,this);不正確,不能將第二個參數強制轉換爲MediaScannerConnectionClient。 – nonozor

+0

@nonozor第二個屬於MediaScannerConnectionClient,如果您在活動中實施MediaScannerConnectionClient,則可以應用(this,this)。 – PiyushMishra

+1

這只是打開其中一個圖片,但不是顯示目錄中圖片概覽的圖庫..... –

相關問題