在android中读取文件 - 文件权限被拒绝

abd*_*him 16 filesystems android

我想从外部存储中读取文件.我将Eclipse DDMS中的文件上传到storage/sdcard(下图).但每当我试图阅读时,我都会收到拒绝许可的错误.我的文件权限有问题吗?或者我需要在清单文件中添加任何内容(我现在不写任何内容)?

任何帮助将不胜感激.

文件夹树

码:

public void extimport(View v){
   EditText xedittxt = (EditText) findViewById(R.id.frmexttxt);
   String xedit = xedittxt.getText().toString();
   xedit = xedit.trim();
   File file;
   file = new File(xedit);
   StringBuilder text = new StringBuilder();
   Log.d("fcheck",""+xedit);
   try {
      BufferedReader br = new BufferedReader(new FileReader(file)); //THIS LINE THROWS ERROR
      Log.d("fcheck","f3"); //This line never got printed
      String line;
      while ((line = br.readLine()) != null) {
         text.append(line);
         text.append('\n');
      }
      br.close();
      resultView = (TextView) findViewById(R.id.header);
      resultView.setText(text);
   }
   catch (IOException e) {
      Log.d("File open error",""+e);
      Toast.makeText(getApplicationContext(), "Error opening the file.", Toast.LENGTH_SHORT).show();
   }
}
Run Code Online (Sandbox Code Playgroud)

logcat的:

11-19 00:21:54.252: D/fcheck(5885): /storage/sdcard/mylibman.csv
11-19 00:21:54.272: D/File open error(5885): java.io.FileNotFoundException: /storage/sdcard/mylibman.csv: open failed: EACCES (Permission denied)
Run Code Online (Sandbox Code Playgroud)

GrI*_*sHu 47

确保您已在清单文件中添加了读取外部存储的权限.

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

  • 不适用于清单中的 WRITE_EXTERNAL_STORAGE、READ_EXTERNAL_STORAGE 权限 (2认同)

Vsw*_*w10 5

我遇到了同样的问题,可以通过以下任一步骤轻松删除它: 1. 如果在 Android N 和 O 版本上安装,请使用 -g 安装您的应用程序。2. 手动授予权限 Settings->apps->"app_name"->Permissions->Enable Switch

对于第 1 步和第 2 步,定义使用权限

android:name="android.permission.WRITE_EXTERNAL_STORAGE" and uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE" in AndroidManifest.xml
Run Code Online (Sandbox Code Playgroud)

像这样 :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="...">


    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <!-- all permissions here -->
    <application
        ...
Run Code Online (Sandbox Code Playgroud)