Android MediaStore无法插入图像数据

时间:2014-04-27 14:15:24

标签: android android-intent android-gallery

我有带图像导出功能的图像编辑应用程序。以前我尝试通过将文件路径uri传递给ACTION_SEND intent来直接导出它。类似的东西:

Intent shareIntent = new Intent();
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
                shareIntent.setType("image/*");
                shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                startActivity(Intent.createChooser(shareIntent, getString(R.string.export)));

但并非所有应用都能正确解析此类意图。所以现在我首先通过将图像添加到android的MediaStore来准备uri:

shareUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(),
                            file.getAbsolutePath(), file.getName(), projectName));

...然后将shareUri传递给intent。现在所有应用程序都可以正确处理此意图,但会出现一个问题 - 每次用户导出图像时,其副本都会添加到android MediaStore中(即使图像路径和名称相同)。

我试图通过以下代码确定已经添加到mediastore的图像:

Cursor c = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, MediaStore.Images.Media.DATA + "=?",
                    new String[] { filePath }, null);
if (c.getCount() > 0 && c.moveToFirst()) {
  shareUri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                        "" + c.getInt(c.getColumnIndex(MediaStore.Images.Media._ID)));
                c.close();
} else {
  shareUri = Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(),
                            file.getAbsolutePath(), file.getName(), projectName));
}

...但是c.getCount()总是== 0.即使我从MediaStore.Images.Media.insertImage复制保存的uri并直接通过

查询它
Cursor c = getContentResolver().query(savedUri, null, null, null);

我如何检测MediaStore中已存在的图像文件?

0 个答案:

没有答案