簡體   English   中英

在android中讀取文件 - 文件權限被拒絕

[英]Read file in android - file permission denied

我想從外部存儲讀取文件。 我將 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();
   }
}

日志貓:

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)

確保您已在清單文件中添加讀取外部存儲的權限。

 <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

我遇到了同樣的問題,可以通過以下任一步驟輕松刪除它: 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

像這樣:

<?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
        ...

在訪問功能之前,需要用戶授予存儲權限

添加依賴:

dependencies:
  permission_handler: ^5.0.1

代碼片段:

      var status = await Permission.storage.status;
       if (status.isUndetermined) {
            // You can request multiple permissions at once.
            Map<Permission, PermissionStatus> statuses = await [
              Permission.storage,
            ].request();
            print(statuses[Permission.storage]); // it should print PermissionStatus.granted
          }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM