在Android上读取文本文件时出错,打开失败:EACCES(权限被拒绝)

在Android上读取文本文件时出错,打开失败:EACCES(权限被拒绝),android,Android,我正在尝试访问Android中的一个文件,下面是代码: File sdcard = Environment.getExternalStorageDirectory(); File file = new File(sdcard,"sos/xconfig.txt"); if(!file.exists()) return text.toString(); BufferedReader br = new BufferedReader(new FileReader(file)); Strin

我正在尝试访问Android中的一个文件,下面是代码:

File sdcard = Environment.getExternalStorageDirectory();
File file = new File(sdcard,"sos/xconfig.txt");

if(!file.exists())
   return text.toString();

 BufferedReader br = new BufferedReader(new FileReader(file));
 String line;

 while ((line = br.readLine()) != null) {
      text.append(line);
      text.append('\n');
    }
 br.close();
在阅读之前,我也会像这样检查读写权限:

 if (ContextCompat.checkSelfPermission(activity, permission)
            == PackageManager.PERMISSION_DENIED) {

        // Requesting the permission
        ActivityCompat.requestPermissions(activity,
                new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE },
                requestCode);
        return false;
    }
    else {
        return true;
    }
但我仍然在这一行遇到一个错误:newfilereaderfile

错误:java.io.FileNotFoundException:/storage/simulated/0/sos/xconfig.txt:打开失败:EACCES权限被拒绝

注意:我已经在menifest文件中添加了使用权限

<uses-permission
    android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission
    android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
你在用安卓Q吗? 如果是这种情况,则需要在AndroidManifest文件中添加此属性:

<manifest ... >
    <!-- This attribute is "false" by default on apps targeting Android Q. -->
    <application android:requestLegacyExternalStorage="true" ... >
     ...
    </application>
</manifest>

来源:

如果在Android Q下无法将文件放置在该位置,您如何尝试读取该位置的文件?@blackapps它将在需要时由用户保留。这很有效。但不会太久。这不是真正的解决办法。对于安卓R,这不再有效。