我通过以下方式插入图像:
ContentValues values = new ContentValues();
values.put(Images.Media.TITLE, filename);
values.put(Images.Media.DATE_ADDED, System.currentTimeMillis());
values.put(Images.Media.MIME_TYPE, "image/jpeg");
Uri uri = this.getContentResolver().insert(Images.Media.EXTERNAL_CONTENT_URI, values);
但是当我试着删除
File f = new File(imageURI);
f.delete();
图片不再存在,但有一个空的占位符。有什么想法吗?
发布于 2010-12-14 00:33:47
Android有一个可以跟踪媒体文件的缓存。
试试这个:
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory())));
它使MediaScanner服务再次运行,这应该会从设备的缓存中删除已删除的映像。
看起来您还需要将此权限添加到您的AndroidManifest.xml:
<intent-filter>
<action android:name="android.intent.action.MEDIA_MOUNTED" />
<data android:scheme="file" />
</intent-filter>
发布于 2014-02-18 08:17:18
正如评论中所述,被接受的答案使用大量内存。虽然MediaScannerConnection没有"deleteFile“方法,但在删除文件后,只需将旧文件路径传递给"scanFile”方法即可。介质扫描仪将重新扫描并取出介质。
已在N5上测试。Android 4.4。
编辑:其他人已经声明这在4.2上不起作用
new AsyncTask<Void, Void, Void>(){
@Override
protected Void doInBackground(Void... params) {
String filePath = recording.file.getAbsolutePath();
recording.file.delete();
MediaScannerConnection.scanFile(context,
new String[]{filePath}, null, null);
return null;
}
}.execute();
发布于 2011-01-08 09:21:28
您也可以使用以下方法从图库中删除图像:
getContentResolver().delete(imageUri,null,null);
只需确保'imageUri‘是您调用insert时返回给您的uri。
https://stackoverflow.com/questions/4430888
复制相似问题