2011-05-20 92 views
3

可能重复:
Gallery with folder filter内置画廊

我用下面的代码来打开我的应用程序

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("image/*"); 
startActivityForResult(intent, TEST_RESULT); 

我的内部画廊需要使用内置图库应用程序来显示特定文件夹中的图像/视频列表。 - 当图库被打开时,有一些意图动作来显示选定的图像? - 是否有任何方法可以确定图像的特定文件夹?**我希望图库仅显示文件夹中的图像/视频(并且没有其他系统文件夹)。

+0

完整的解决方案已经在这里讨论 - http://stackoverflow.com/questions/2169649/open-an-image-in-androids-built-in-gallery-app - 编程/ 2636538#2636538 – 2011-05-20 15:45:49

+2

@peter_budo:首先请看两个问题之间的区别,我搜索了很多,这个问题是有效的因为你建议上面的网址不是他要求的答案... – PiyushMishra 2011-11-20 13:19:24

+0

@PiyushMishra original海报甚至懒得回来解释他想要的东西,所以你怎么确定海报想要什么。你是否介意读者?在你身边碰到了6个月的帖子,没有有效的信息 – 2011-11-21 20:44:07

回答

9

您只需要在您的活动中实施MediaScannerConnectionClient,然后您必须将该文件夹名称中的文件名称之一作为SCAN_PATH的确切路径,并且它将扫描该文件夹中包含的所有文件并将其打开建在画廊。所以只需给出你的文件夹的名称,你就会得到包括视频在内的所有文件。如果你想打开仅适用于图像改变FILE_TYPE="image/*"

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

它是“图像/ *”,而不是“图像/ *”与复数s。除此之外,这是解决这个问题的最佳解决方案。 – dermatthias 2012-03-28 12:03:06

+0

@dermatthias很高兴它可以帮助你,并感谢纠正会更新它。 – PiyushMishra 2012-03-28 12:24:45

+0

为什么我能够只显示allFiles [0]指向的图像,而不是显示在同一目录中的所有图像? – 2012-07-26 14:25:16