get the last picture taken by user

…衆ロ難τιáo~ 提交于 2019-11-26 12:26:40

问题


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 send that image as an attachment to an email or MMS..

thanks


回答1:


// 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.




回答2:


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


来源:https://stackoverflow.com/questions/8337585/get-the-last-picture-taken-by-user

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!