如何从图库中删除视频?

时间:2014-09-22 18:38:08

标签: java android gallery

我尝试使用此代码删除我的视频,但在某些设备上,它们显示为无法在Gallery中播放的损坏视频。

File videoFile = new File(filepath);
videoFile.delete();

如何正确删除它们?

3 个答案:

答案 0 :(得分:2)

图库正在显示媒体库数据。要从库中完全删除文件,您必须删除视频的mediastore数据库行。

  • 在代码中从mediastore中删除记录。

    // delete the mediastore entry;
    getContext().getContentResolver().delete(mediaStoreUri, null, null);
    

现在你需要的只是mediaStoreUri,你可以从文件路径中获取它。

//found this on github 

https://gist.github.com/jdeloach/3172742

上面链接的问题我希望他们使用ContentUris.withAppendedId静态方法来获取Uri,但是他们只是添加一个斜杠并将其字符串输出

Uri mediaStoreUri = ContentUris.withAppendedId(
    MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            ImageId);

答案 1 :(得分:1)

根据danny117的回答,我找到了删除图库中视频的解决方案:

/**
* Returns the Uri which can be used to delete/work with images in the photo gallery.
* @param filePath Path to IMAGE on SD card
* @return Uri in the format of... content://media/external/images/media/[NUMBER]
*/
private Uri getUriFromPath(String filePath) {
    long videoId;
    Uri videoUri = MediaStore.Video.Media.getContentUri("external");

    String[] projection = {MediaStore.Video.Media._ID};
    // TODO This will break if we have no matching item in the MediaStore.
   Cursor cursor = getContentResolver().query(videoUri, projection, MediaStore.Video.Media.DATA + " LIKE ?", new String[] { filePath }, null);
   cursor.moveToFirst();

   int columnIndex = cursor.getColumnIndex(projection[0]);
   videoId = cursor.getLong(columnIndex);

   cursor.close();
   return contentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, videoUri);
}

答案 2 :(得分:0)

Java代码似乎是正确的,您是否在清单中声明了WRITE_EXTERNAL_STORAGE? 如果没有,请在<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />代码

之外添加<application>