get the last picture taken by user

前端 未结 2 954
渐次进展
渐次进展 2020-11-28 08:46

hey I want to get the last picture captured by user through any camera application. I have no idea how to do that

can any one help me?

further I want to sen

相关标签:
2条回答
  • 2020-11-28 09:31
    // Find the last picture
    String[] projection = new String[]{
        MediaStore.Images.ImageColumns._ID,
        MediaStore.Images.ImageColumns.DATA,
        MediaStore.Images.ImageColumns.BUCKET_DISPLAY_NAME,
        MediaStore.Images.ImageColumns.DATE_TAKEN,
        MediaStore.Images.ImageColumns.MIME_TYPE
        };
    final Cursor cursor = getContext().getContentResolver()
            .query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, 
                   null, MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
    
    // Put it in the image view
    if (cursor.moveToFirst()) {
        final ImageView imageView = (ImageView) findViewById(R.id.pictureView);
        String imageLocation = cursor.getString(1);
        File imageFile = new File(imageLocation);
        if (imageFile.exists()) {   // TODO: is there a better way to do this?
            Bitmap bm = BitmapFactory.decodeFile(imageLocation);
            imageView.setImageBitmap(bm);         
        }
    } 
    

    I'm still working on the MMS sending part.

    0 讨论(0)
  • 2020-11-28 09:34

    Inspired by https://stackoverflow.com/a/20065920/763459

    So the main concern in that answer was not all the devices are using "DCIM" as the camera folder. Then I found out that if a file is located inside a app-specified folder, it will be indexed by ContentResolver but the other app doesn't have access to it, which means canRead=false. So here I come up with another solution:

        while (cursor.moveToNext()) {
            String imagePath = cursor.getString(cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA));
            File imageFile = new File(imagePath);
            if (imageFile.canRead() && imageFile.exists()) {
               // we have found the latest picture in the public folder, do whatever you want
                break;
            }
        }
    
    0 讨论(0)
提交回复
热议问题