Android MediaStore不会带来最后一张照片

时间:2016-04-05 05:57:02

标签: android

我对一个特定的Android设备(猫手机)有严重问题,但不能使用此代码拍摄最后一张照片:

 Cursor cursor = getContentResolver().query(
                    Media.EXTERNAL_CONTENT_URI, new
                            String[]{Media.DATA, Media.DATE_ADDED, MediaStore.Images.ImageColumns.ORIENTATION},
                    Media.DATE_ADDED, null, "date_added ASC");
            if (cursor != null && cursor.moveToFirst()) {
                do {
                    Uri uri = Uri.parse(cursor.getString(cursor.getColumnIndex(Media.DATA)));
                    photoPath = uri.toString();
                } while (cursor.moveToNext());
                cursor.close();
            }

这可以在多个手机中运行,有几个Android版本,但它不能在那部手机中工作(moveToFirst返回false)。

最糟糕的是,某些应用会更新此数据库(例如,获取屏幕截图应用)。但是如果拍完截图后我拍了一张照片,那个光标的最后一条记录就是截图。

我发现了这个解决方法:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, _uri));
    } else {
        sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, _uri));
    }

我把那些代码放在光标之前,但仍然无法工作。

有什么想法吗?

修改

我解决了问题,问题是:

Camera activity returning null android

但是每个人总是给出一半并回答。我做的是这个:

......创建意图:

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
outputFileUri = getImageUri();            takePictureIntent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);

...

/**
 * @return
 */
private Uri getImageUri() {
    Uri m_imgUri = null;
    File m_file;
    try {
        SimpleDateFormat m_sdf = new SimpleDateFormat("yyyyMMdd_HHmmss");
        String m_curentDateandTime = m_sdf.format(new Date());
        String m_imagePath = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + m_curentDateandTime + ".jpg";
        m_file = new File(m_imagePath);
        m_imgUri = Uri.fromFile(m_file);
    } catch (Exception p_e) {
    }
    return m_imgUri;
}

处理回复:

if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {

                String photoPath = outputFileUri.getPath();

}

1 个答案:

答案 0 :(得分:0)

答案在我原来的 EDIT 中。