【问题标题】:Android delete file on SD on Androud api 4.4.+Android 在 Android api 4.4.+ 上删除 SD 上的文件
【发布时间】:2018-03-07 03:52:22
【问题描述】:

我有一个File 对象,file。这个file 指向SD 卡上的一个文件。如何在 Android api 版本 5.+ 上删除此 file ?我在 Manifest 中拥有 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 权限,也在运行时调用。我试过file.delete() 它适用于内部和外部存储,但SD卡/二级存储上的文件不会被删除。有什么建议吗?

【问题讨论】:

  • 如果你有File对象和外部存储的读/写权限,你可以调用file.delete()。话虽如此,在将其作为问题发布之前,请尝试阅读有关您正在使用的课程的文档
  • @osman 看看这个答案。这可能会帮助你click here
  • file.delete() 不适用于 SD 卡上的文件。根据我发现 google 在 api 版本 4.4 之后限制 SD 卡写入权限

标签: android


【解决方案1】:

您可以通过此方法删除任何文件或目录:

File f = new File("your path");
f.delete();

别忘了在清单中添加权限

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

6.0 及以上版本您需要像这样授予运行时权限:

final String[] NECESSARY_PERMISSIONS = new String[] {Manifest.permission.WRITE_EXTERNAL_STORAGE};

    if ((ContextCompat.checkSelfPermission(getApplicationContext(),
            Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED)) {
    {
            //Permission granted.
    }
    else
    {       
            // Request for permission
            ActivityCompat.requestPermissions(getApplicationContext(),
                    NECESSARY_PERMISSIONS, 123);
    }

【讨论】:

  • 我有权限。 file.delete() 不适用于 SD 卡。这个我已经试过了。
  • 您运行的是 6.0 > 版本?
  • 我正在开发安卓棒棒糖。我考虑过运行时许可。我可以在应用设置中看到该应用具有 WRITE 权限。 请注意,我可以删除内部和外部存储上的相同文件。但是,SD 卡/二级存储上的文件不会被删除
【解决方案2】:

@osman 可能是你没有实现运行时权限的概念

【讨论】:

  • 是的,我已经考虑了运行时WRITE_EXTERNAL_STORAGE 权限。 请注意,我可以删除内部和外部存储上的相同文件。但是,SD 卡/二级存储上的文件不会被删除
  • 我已经看到了这个问题。唯一可行的选择似乎是“系统存储提供商”。但找不到任何工作示例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多