从 SD 卡中删除音频

Delete Audio From Sdcard

我正在尝试删除 SD 卡中的音频文件,但没有成功

public boolean delete(String path)
{ 
   return new File(path).delete();
}

在浏览帖子时,我遇到了 Storage Access Framework 但无法理解。从 SD 卡中删除文件是否需要? 而且我只能使用Content Resolver来删除这样的文件吗?

getContenResolver().delete(uri,null,null);

或者有没有其他方法可以删除Audio? 我的应用程序在 Write permissionRead permission 上得到了很好的提升,我正在 Marshmallow 6.0

上进行测试

请回答。

提前致谢。

您需要确保两件事:

1) 由于您的目标是 Android.M,因此您还需要获得运行时权限。仅仅在清单中要求它们是不够的。

2) 如果您想read/write SD 卡上的数据您需要使用DocumentFile 而不是File。逻辑大致相同,但您可以参考此处了解更多信息:https://developer.android.com/reference/android/support/v4/provider/DocumentFile.html


在您的 OnCreate 或您希望的任何地方使用此命令打开一个对话框,让您 select 一个 SD 目录。 Select 你的图片所在的那个。

startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);

那么你将需要这个方法:

@Override
    public void onActivityResult(int requestCode,int resultCode,Intent resultData) {
        if (resultCode != RESULT_OK)
            return;
        Uri treeUri = resultData.getData();
        DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
        grantUriPermission(getPackageName(), treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

        DocumentFile YourAudioFile=  pickedDir.findFile("YourAudioFileNameGoesHere");


// And here you can delete YourAudioFile or do whatever you want with it

}