作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过执行以下操作从 Android Q 上的下载文件夹中读取文件:
File downloadDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
File f = new File(downloadDir, "some-existing-file");
if(!f.exists()) {
throw new IllegalStateException();
}
Uri furi = Uri.fromFile(f);
try {
ParcelFileDescriptor des = getContentResolver().openFileDescriptor(
furi, "r", null);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
android:requestLegacyExternalStorage="true"
在 list 中,并请求
WRITE_EXTERNAL_STORAGE
和
READ_EXTERNAL_STORAGE
运行时权限。
java.io.FileNotFoundException: open failed: EACCES (Permission denied)
.
最佳答案
从 Android 6 (Marshmallow) 开始,用户应该在运行时授予一些关键权限,以便他/她知道您的应用可以访问哪些内容。
这个link就是你所需要的
编辑
将这些添加到 list
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
if (android.os.Build.VERSION.SDK_INT >= 23 && (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED)) {
ActivityCompat.requestPermissions(
this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
2000);
}
onRequestPermissionsResult
方法将被调用,因此覆盖
onRequestPermissionsResult
像这样
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED && requestCode == 2000) {
//do what you want with files
}
}
关于android - 如何在 Android 10 (Q) 上直接从外部下载目录读取文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60855299/
我是一名优秀的程序员,十分优秀!