Эй, я хочу, чтобы последняя фотография была захвачена пользователем через любое приложение камеры. Я не знаю, как это сделать
Может кто-нибудь мне помочь?
далее я хочу отправить это изображение как вложение в электронную почту или MMS.
спасибо
Эй, я хочу, чтобы последняя фотография была захвачена пользователем через любое приложение камеры. Я не знаю, как это сделать
Может кто-нибудь мне помочь?
далее я хочу отправить это изображение как вложение в электронную почту или MMS.
спасибо
// 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);
}
}
Я все еще работаю над частью отправки MMS.
Вдохновленный fooobar.com/info/434898/...
Таким образом, основной проблемой в этом ответе было не все устройства, использующие "DCIM" в качестве папки камеры. Затем я узнал, что если файл находится в папке, указанной в приложении, он будет проиндексирован ContentResolver
, но другое приложение не имеет к нему доступа, что означает canRead=false
. Итак, здесь я придумал другое решение:
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;
}
}