/ / Як видалити відео з Галереї? - java, android, галерея

Як видалити відео з галереї? - java, android, галерея

Я намагався видалити свої відео з цим кодом, але на деяких пристроях вони виглядають як пошкоджені відео, які неможливо відтворити в Галереї.

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

Як їх видалити належним чином?

Відповіді:

1 для відповіді № 1

Галерея відображає дані медіа-магазину. Щоб повністю видалити файл із галереї, потрібно видалити рядок бази даних 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);

0 для відповіді № 2

Код Java здається правильним, ви декларували WRITE_EXTERNAL_STORAGE у вашому маніфесті? Якщо ні, додайте <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> за межами вашого <application> тег


0 для відповіді № 3

На основі відповіді 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);
}