在Android / DCIM /中获取库存相机图像位置的简单方法?

时间:2014-02-13 01:47:34

标签: android camera stock

我有一个应用程序的想法,并且要做到这一点,我需要在库存相机存储它的图片的文件夹中。但由于大多数制造商都在不同地命名DCIM内的文件夹,有没有办法找到相机保存图片的特定文件夹。此外,我无法列出并打开第一个结果,因为,例如我有5个文件夹。谢谢!

3 个答案:

答案 0 :(得分:2)

其中一个解决方案是使用ContentResolver将照片插入MediaStore(它将创建空的JPG文件),检索其路径并从MediaStore中删除它(文件也将被删除)。

public static File getPhotoDirPath(ContentResolver cr)
{
    try
    {
        Uri takenPhotoUri=cr.insert( MediaStore.Images.Media.EXTERNAL_CONTENT_URI, new ContentValues( 1 ) );
        if ( takenPhotoUri == null )
            return null;
        String photoFilePath=null;
        Cursor cursor = cr.query( takenPhotoUri, new String[] { MediaColumns.DATA }, null, null, null );
        if ( cursor != null )
        {
            int dataIdx = cursor.getColumnIndex( MediaColumns.DATA );
            if (dataIdx>=0&&cursor.moveToFirst())
                photoFilePath = cursor.getString( dataIdx );
            cursor.close();
        }
        cr.delete( takenPhotoUri, null, null );
        if (photoFilePath!=null)
            return new File(photoFilePath).getParentFile();
        return null;
    }
    catch (Exception ex)
    {//insert or delete failed
        return null;
    }
}   

请注意,在某些情况下(与相机应用程序无法保存照片时相同)可能无法成功插入照片,例如。 SD卡被删除(如果设备无法模拟外部存储),外部存储器以只读方式挂载或路径中的某些目录被写保护等。

答案 1 :(得分:1)

您可以将Environment.DIRECTORY_PICTURES 作为有效目录。

以下内容将引用该目录(但并非所有设备都保证):

File storageDir = Environment.getExternalStoragePublicDirectory(
        Environment.DIRECTORY_PICTURES);

答案 2 :(得分:1)

所以我最终用.exists()

来做
String abcd = "is it working ?";
          File pathimg = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);
          File testimg = new File (pathimg, "100MEDIA/");
          if (testimg.exists()){abcd = testimg.toString();}
          else {
              File testimg2 = new File (pathimg, "100ANDRO/");
              if (testimg2.exists()){abcd = testimg2.toString();}
              else {
                  File testimg3 = new File (pathimg, "Camera/");
                  if (testimg3.exists()){abcd = testimg3.toString();}
                  else {
                      File testimg4 = new File (pathimg, "100LGDSC/");
                      if (testimg4.exists()){abcd = testimg4.toString();}
                      else {
                          abcd = "It's not working";
                      }
                  }                   
              }
          }

在我的G2上,文件夹“100LGDSC”正在运行。