首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Android文件删除在图库中留空占位符

Android文件删除在图库中留空占位符
EN

Stack Overflow用户
提问于 2010-12-14 00:14:49
回答 8查看 14K关注 0票数 19

我通过以下方式插入图像:

    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();

图片不再存在,但有一个空的占位符。有什么想法吗?

EN

回答 8

Stack Overflow用户

回答已采纳

发布于 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>
票数 17
EN

Stack Overflow用户

发布于 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();
票数 11
EN

Stack Overflow用户

发布于 2011-01-08 09:21:28

您也可以使用以下方法从图库中删除图像:

getContentResolver().delete(imageUri,null,null);

只需确保'imageUri‘是您调用insert时返回给您的uri。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4430888

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档