Android 从contentResolver中删除文件仅从数据库中删除条目(不是文件)
我尝试使用contentResolver删除一个文件,但只删除数据库中的条目,而不是真正的文件。因此,我尝试先删除条目,然后删除文件:Android 从contentResolver中删除文件仅从数据库中删除条目(不是文件),android,android-contentresolver,mediastore,Android,Android Contentresolver,Mediastore,我尝试使用contentResolver删除一个文件,但只删除数据库中的条目,而不是真正的文件。因此,我尝试先删除条目,然后删除文件: int rows = context.getContentResolver().delete( MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, MediaStore.Audio.Media._ID + "=" + idSong, null); // Remove file from card if (rows != 0
int rows = context.getContentResolver().delete(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
MediaStore.Audio.Media._ID + "=" + idSong, null);
// Remove file from card
if (rows != 0) {
Uri uri = ContentUris.withAppendedId(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, idSong);
File f = new File(uri.getPath());
if(!f.delete())
Log.d("fail-2", "fail-2");
}
else
Log.d("fail-1", "fail-1");
…输出为“fail-2”。为什么?
为什么ContentResolver不删除真实文件?这正常吗?正在工作:
// Remove entry from database
int rows = context.getContentResolver().delete(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
MediaStore.Audio.Media._ID + "=" + idSong, null);
// Remove file from card
if (rows != 0) {
try {
File f = new File(path);
if (f.delete())
return true;
} catch (Exception e) {
Log.d("MusicDB", "file: '" + path
+ "' couldn't be deleted", e);
return false;
}
}
return false;
但是为什么contentResolver不删除文件???在4.2中,它似乎将文件归零,但不删除它。我实际上希望它只是将其从MediaStore中删除,而不是从文件系统中删除。不管怎样,这似乎是一个Android错误 我在更新文件时遇到问题。我遇到的问题是,媒体扫描程序在重新扫描时没有删除旧条目,因此您将得到两个条目。在kotlin中尝试此条目
contentResolver.delete(
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI
,"_data" + "=?",
arrayOf(path) )