我想使用默认的android gallery应用程序在我的程序中打开特定文件夹的图像。我在帖子中使用了piyush mishra给出的代码但是我在代码下面写的问题
public class GalleryActivity extends Activity implements MediaScannerConnectionClient{
/** Called when the activity is first created. */
public String[] allFiles;
private String SCAN_PATH ;
private static final String FILE_TYPE = "images/*";
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/images/");
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()+"/images/"+allFiles[0];
Log.e("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.toString() + "success"+conn);
if (uri != null)
{
Intent intent = new Intent(Intent.ACTION_DEFAULT);
intent.setData(uri);
startActivity(intent);
}
} finally
{
conn.disconnect();
conn = null;
}
}
}
但是这段代码也显示了设备上的其他图片
答案 0 :(得分:1)
我遇到同样的问题,我想将图库发布到带有视频和图片的特定文件夹中。
有了这个我似乎总是得到:ActivityNotFoundException
基于其他posts,我可以启动图库,但不能启动特定文件夹,也无法启动视频和图片。把头发拉出来。一直在尝试使用缩略图实现网格视图,这可能是一个选项。但是,为什么要经历创建,线程化和缓存缩略图的麻烦,那就是图库应用程序所做的事情。
Intent intent = new Intent();
intent.setAction(Intent.ACTION_PICK);
intent.setData(uri);
intent.setType("image/*");
startActivityForResult(intent, 0);
答案 1 :(得分:0)
我认为这有助于 Gallery with Folder Filter
即使我正在尝试这个......我也没能成功找到一种方法......很多搜索但没有用..
答案 2 :(得分:0)
在使用此更新图库之前发送广播。只需复制粘贴即可。
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file:/+ Environment.getExternalStorageDirectory())));