【问题标题】:How to open one particular folder from gallery in android?如何从 android 的图库中打开一个特定文件夹?
【发布时间】:2012-05-25 06:11:55
【问题描述】:

我正在使用以下代码打开 android 默认图库应用。它会打开 sdcard 下的所有图像文件夹。如何只打开一个特定文件夹?

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

【问题讨论】:

标签: android android-intent android-gallery


【解决方案1】:

使用以下代码获取特定文件夹图像。

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

【讨论】:

  • 是否可以从此代码调用图库中的共享选项?
  • 有没有什么方法可以从我们的程序中调用属于我的特定目录的图像上的共享选项?
  • 是的,我们有,但是....首先我们需要获取图像 uri,并且应该上传到您要上传的目的地..我的意思是服务器端..
  • 是否可以导入文件夹中的所有图像?因为现在我可以选择我想看的图像,但我想看所有的图像。提前谢谢!
  • 嗨。当我尝试运行此代码时出现以下异常:Uncaught remote exception! (Exceptions are not yet supported across processes.) android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://media/external/images/media/2115 }
猜你喜欢
  • 1970-01-01
  • 2013-02-17
  • 1970-01-01
  • 2021-02-21
  • 2015-08-12
  • 1970-01-01
  • 2021-03-08
  • 2017-03-12
  • 1970-01-01
相关资源
最近更新 更多