[英]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.