代码之家  ›  专栏  ›  技术社区  ›  Dibyaranjan Mishra

从SD卡删除音频

  •  3
  • Dibyaranjan Mishra  · 技术社区  · 7 年前

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

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

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

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

    或者有没有其他方法可以删除音频? 我的应用程序通过 Write permission Read permission 我正在测试 Marshmallow 6.0

    请回答。

    提前谢谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Sotiris S. Magionas    7 年前

    您需要确保两件事:

    1) 因为你的目标是Android。M您还需要获得运行时的权限。仅仅在清单中要求他们是不够的。

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


    在OnCreate或任何您想要的地方使用此命令,打开一个对话框,让您选择一个SD目录。选择图像所在的位置。

    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
    
    }