我正在使用下载管理器在我的 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/