android - 写入外部存储权限始终被拒绝

标签 android permissions

我正在使用下载管理器在我的 android 应用程序中下载图像。
为了获得“WRITE_EXTERNAL_STORAGE”许可,我要起诉 Dexter图书馆。

        Dexter.withContext(getApplicationContext())
            .withPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)
            .withListener(new PermissionListener() {
                @Override
                public void onPermissionGranted(PermissionGrantedResponse permissionGrantedResponse) {
                    Toast.makeText(LiveTaskActivity.this, "Granted", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onPermissionDenied(PermissionDeniedResponse permissionDeniedResponse) {
                    Toast.makeText(LiveTaskActivity.this, "Denied", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onPermissionRationaleShouldBeShown(PermissionRequest permissionRequest, PermissionToken permissionToken) {

                }
            }).check();
但即使我手动接受从应用程序授予权限的权限,我也总是获得“拒绝”权限。我还尝试手动实现权限请求代码。
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED
            || ActivityCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
    } else {
        download();
    }
尽管如此,我还是无法获得许可。这是 list 代码:
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <application
      android:requestLegacyExternalStorage="true"
这是我的 buil.gradle(app) 代码:
android {
compileSdkVersion 30
buildToolsVersion "30.0.3"

defaultConfig {
    applicationId "app.gigg.me.app"
    minSdkVersion 22
    targetSdkVersion 30
    versionCode 2
    versionName '1.0.1'
请帮我解决这个问题。
**更新这是我的下载代码
    private void startDownload() {
    Toast.makeText(this, "Downloading File...", Toast.LENGTH_SHORT).show();
    fileName = link.substring(link.lastIndexOf("/") + 1) + ".png";
    File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getPath(), fileName);
    DownloadManager.Request request = new DownloadManager.Request(Uri.parse(link))
            .setTitle(fileName)
            .setDescription("Downloading")
            .setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED)
            .setDestinationUri(Uri.fromFile(file))
            .setMimeType("image/*")
            .setAllowedOverMetered(true)
            .setAllowedOverRoaming(true);
    download_id = downloadManager.enqueue(request);
}

最佳答案

WRITE_EXTERNAL_STORAGE面向 Android 11 ( targetSdkVersion 30 ) 时不可用。
你可以在这里阅读更多:https://developer.android.com/about/versions/11/privacy/storage

关于android - 写入外部存储权限始终被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68079350/

相关文章:

安卓 "No content provider found or permission revoke"与安卓 4

php - MySQL,输出文件 : Is it possible to store query result into a variable instead of a file

Mysql对单表的覆盖权限

android - Kotlin:在 Activity 中使用 BroadcastReceiver 时未解析的本地类

java - 函数和可运行对象同时工作(如何?)(Android、Java)

java - 如何在键盘出现时隐藏或保持底部导航向下,同时让文本编辑器工具栏上下移动?

java - 如何解决 Debugger has detached;对象注册表在 android studio 中有 1 个条目

android - 在不改变方向的情况下旋转 Android 显示器

Android Market 将我的应用程序隐藏到某些平板电脑(如 Nexus 7)

linux - Linux 中如何允许其他用户的文件夹权限