无法删除SD卡上的文件 - java

我正在尝试删除SD卡上的某些文件,但我的想法没用了。

我尝试了File.delete()方法,然后我尝试了file.getCanonicalFile().delete()还有很多 ..
我的应用程序只能删除设备存储上的文件。
我已经在清单文件中定义了所需的权限,如下所示。

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

而且我还在代码中请求许可:

  if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        new AlertDialog.Builder(this)
                .setTitle(R.string.read_storage_message)
                .setPositiveButton(R.string.ok,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                ActivityCompat.requestPermissions(activity,
                                        new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MainActivity.READ_STORAGE_PERMISSION_ID);
                            }
                        }
                )
                .setNegativeButton(R.string.cancel,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                AppKiller.kill();

                            }
                        }
                ).show();
    }
    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        new AlertDialog.Builder(this)
                .setTitle(R.string.write_storage_message)
                .setPositiveButton(R.string.ok,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                ActivityCompat.requestPermissions(activity,
                                        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, MainActivity.STORAGE_PERMISSION_ID);
                            }
                        }
                )
                .setNegativeButton(R.string.cancel,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int whichButton) {
                                AppKiller.kill();

                            }
                        }
                ).show();
    }
}

我正在使用以下方法删除文件,但是正如我之前提到的,我已经使用了Stack-overflow等中的许多解决方案。

protected boolean delete(Context context) throws Exception {
        boolean delete = false;
        File file = new File(Environment.getExternalStorageDirectory().getPath() + getName());
        if (file.exists()) {
            delete = file.delete();
            if (!delete) {
                delete = file.getCanonicalFile().delete();
            }
            if (!delete) {
                String deleteCmd = "rm -r " + file.getAbsolutePath();
                Runtime runtime = Runtime.getRuntime();
                runtime.exec(deleteCmd);
            }
        }
        return delete;
    }

可能是因为我正在请求READ_EXTERNAL_STORAGEWRITE_EXTERNAL_STORAGE权限,但是在代码中我只是获得了READ_EXTERNAL_STORAGE授予,而另一个则被Android忽略(我接受第一个后,它不会显示带有allow-deny选项的WRITE_EXTERNAL_STORAGE弹出权限)。是不是因为它们在android中具有相同的权限级别?

有什么问题吗?

参考方案

是的,您无法再使用File类从现代Android版本的SD卡中删除文件。

请改用Storage Access Framework。

看看Intent.OPEN_DOCUMENT_FILEOPEN_DOCUMENT_TREE

Java File.delete()有时会留下无法访问的文件(Windows) - java

我试图以编程方式从正在运行的(!)系统中清除日志文件,该系统由数个Java和非Java服务器组成。我使用了Java的File.delete()操作,它通常可以正常工作。对于当前未删除的正在使用的日志文件,我也非常满意,因此只要File.delete()返回false时,我就将其记录为警告。但是,在目前仍由NON-Java应用程序(Postgres,Apach…

android-android studio模拟器中的SSL问题,在手机上可以正常工作 - java

我有一个可以通过https调用网络服务的应用程序。当我在手机上运行apk时,效果很好。但是,在模拟器中,所有通过POST的SSL请求均失败,并显示以下信息: 读取错误:ssl = 0xb402be00:SSL库失败,通常是一个协议 错误 错误:100c50bf:SSL例程:ssl3_read_bytes:NO_RENEGOTIATION(外部/无聊的sl /…

绑定Java库Xamarin.Android - java

我花了两天时间在每个论坛,文档,tuto,博客等上寻找答案。我为实习生启动了一个Android应用程序,因为我不懂Java,所以用xamarin C#开发了它。直到最近一切都还不错,但现在我需要集成一个SDK才能在应用程序中使用POS(销售点),但是该库是用Java编写的,即使跟随文档或辅导老师,我也无法将其与xamarin绑定(我什至无法调试)。这里有人已…

Android Studio报告“android sdk解析不正确” - java

我只是将一个android项目从eclipse迁移到了android studio,但是当我尝试对其进行编译时,出现错误“android sdk被错误地解析”。有什么帮助吗? 参考方案 尝试将Android Studio配置为指向您的SDK安装。

首先关注EditText清晰文本-Android - java

It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current fo…