如何从媒体存储中删除单个文件?

Ank*_*ava 3 mysql android

这段代码有效

\n\n
getActivity().getContentResolver().\n   delete(MediaStore.Audio.Media.EXTERNAL_CONTEN\xe2\x80\x8c\xe2\x80\x8bT_URI ,\n          "TITLE =\'" + songdetails.get(index).song + "\'", null); \n
Run Code Online (Sandbox Code Playgroud)\n\n

但问题是,它将删除所有具有给定标题的文件。我尝试使用数据而不是标题,但它不起作用,弹出错误提示“没有名为 DATA 的列”。

\n\n

任何人都可以就使用什么而不是标题提出任何建议吗?或者谁能​​告诉我删除某些东西的完全不同的方法。我也尝试过,有效,

\n\n
File file = new File(songdetails.get(index).Path);\n                 boolean deleted = file.delete();\n
Run Code Online (Sandbox Code Playgroud)\n\n

但问题是媒体存储没有更新

\n

gau*_*430 5

在删除功能后尝试此行

\n\n
sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"+ Environment.getExternalStorageDirectory())));\n
Run Code Online (Sandbox Code Playgroud)\n\n

(自 Android 4.4 以来,上述解决方案似乎不起作用)

\n\n

对于数据:

\n\n
MediaStore.MediaColumns.DATA\n
Run Code Online (Sandbox Code Playgroud)\n\n

你也可以尝试使用这个

\n\n
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, Uri.fromFile(fileDeleted)));\n
Run Code Online (Sandbox Code Playgroud)\n\n

请参阅此链接了解(某种)详细方法:

\n\n

http://sandersdenardi.com/querying-and-removing-media-from-android-mediastore/

\n\n

还要记住:

\n\n
\n

所有查询和删除(以及与此相关的插入和更新)\n 都会阻塞,直到基础事务完成为止。您应该在单独的线程上对 ContentResolver 异步执行这些操作。虽然 MediaStore 上的删除应该\xe2\x80\x99 不会花费大量时间,但如果在主线程上执行,则会阻塞 UI。

\n
\n


kal*_*pvs 5

做这样的事情..扫描你的文件..只需传递你想要删除的文件路径..

private void scanaddedFile(String path) {
    try {
        MediaScannerConnection.scanFile(context, new String[] { path },
                null, new MediaScannerConnection.OnScanCompletedListener() {
                    public void onScanCompleted(String path, Uri uri) {
                        context.getContentResolver()
                                .delete(uri, null, null);
                    }
                });
    } catch (Exception e) {
        e.printStackTrace();
    }

}
Run Code Online (Sandbox Code Playgroud)