我在Android R上遇到了一个真正的连线问题,这就是我所做的。
中使用WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限。
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />中的权限
private void checkPermission() {
int pid = android.os.Process.myPid();
int read = checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE, pid, 1);
int write = checkPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE, pid, 1);
ArrayList<String> permissions = new ArrayList<>();
if (read != PackageManager.PERMISSION_GRANTED)
permissions.add(Manifest.permission.READ_EXTERNAL_STORAGE);
if (write != PackageManager.PERMISSION_GRANTED)
permissions.add(Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissions.size() > 0) {
String[] permissionArray = new String[permissions.size()];
permissions.toArray(permissionArray);
requestPermissions(permissionArray,1);
}
}
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
//I ignored the result check here since I definitely know that I clicked on the "Allow" button when
//I was asked to allow the permissions
File directory = new File("/storage/emulated/0/ebook");
File[] files = directory.listFiles();
for(File file : files)
{
try {
Log.i("tagd", "file name: " +file.getCanonicalPath());
} catch (IOException e) {
e.printStackTrace();
}
}
}好了,连线的东西来了。从日志里,我只有一行:
file name: /storage/emulated/0/ebook/temp但在文件夹“电子书”中,实际上有40个项目。39份PDF文件和1个文件夹“临时”。所有PDF文件都不见了。在具有任何类型文件的其他目录中也发生了同样的事情。
generic_x86_64_arm64:/sdcard/ebook $ ls
1.pdf dovado\ 4GR\ Reference_manua62X.pdf.pdf
111(1).pdf fit_diff_pages.pdf
2013\ Mar.pdf help.pdf
2017-08-03_SZ_NK.pdf interactiveform_enabled.pdf
223622-100518.pdf invoice\ 2013-1-28.pdf
59df269384986.pdf pass-111111.pdf
732101500002013-07-21_03-55-53-3352579.pdf pdf_commenting_new.pdf
Aeroplane\ -\ bjo.pdf pdfa_pagina_a4_gear_movie.pdf
BoardMeetingMinutes.1024.pdf signature.pdf
CreditCardReckoning201211.pdf temp
DEMO_SV_lowsize.pdf test.pdf
Geografie_\ Gr\ 10\ Portefeuljeboek\ -\ vnull.pdf test.pfx
Geografie_\ Gr\ 10\ Portefeuljeboek\ -\ vnull_unlocked.pdf test1.pdf
Layali_Ashar[1].pdf test28k.pdf
PDF\ markup\ design-Model.pdf test_att.pdf
Praise\ And\ Thanksgiving\ (Morning\ Has\ Broken).pdf visa-china.pdf
Professional_Android_2_Application_Development.pdf 为人父母.pdf
Welcome_to_Radaee_PDF_Master.pdf 张霁\ 简历\ 3\ -\ 副本.pdf
Xaml_Introduction.pdf 比亚迪.pdf
__ViewPoint\ 8000________________\ (2).pdf 美时每客CakeTime移动平台项目开发分析报告.pdf这个问题只能在Android上复制,代码非常简单,在其他Android版本上也很好。有人知道这里发生了什么吗?任何帮助都将不胜感激,谢谢。
发布于 2022-02-22 05:49:45
这似乎与android 11的存储更新有关。这是一个非常恼人的变化。他们没有提供很多有用的错误信息,就悄无声息地破坏了API契约。要么抛出异常,要么在日志中添加一些警告,这将为节省开发人员的时间提供更好的线索。
https://developer.android.com/about/versions/11/privacy/storage
发布于 2020-09-15 14:03:27
它可能与权限相关??此方法有一个异常。
如果存在安全管理器,并且它的
(String)方法拒绝对目录的读取访问,则为SecurityManager#checkRead
https://developer.android.com/reference/java/io/File#listFiles()
发布于 2020-12-28 14:19:13
我也有过类似的问题。重新启动设备解决了问题..。好奇怪..。也许是安卓系统的错误
https://stackoverflow.com/questions/63898697
复制相似问题