[英]How to run a hdfs cat command and read output file using Java
[英]Android: unable to read a file using bufferedReader whereas cat command run in adb shell works fine
我正在嘗試使用Android API = 23中的bufferedReader讀取系統文件,但出現以下錯誤: 打開失敗:EACCES(權限被拒絕) 。
該文件是只讀的。 另一方面,在adb shell中運行的“ cat”命令也可以正常工作。
另外, File.exists()對我的文件返回true ,而File.canRead()返回false 。 它與管理/根訪問權限有關嗎? adb shell是否可以讓您以root身份訪問系統?
PS:我已授予該應用程序的讀/寫權限( 根據API 23 )
Android為Android 6.0(棉花糖)添加了新的權限模型。
因此,您必須檢查Runtime Permission:
什么是運行時權限?
Google通過Android 6.0 Marshmallow引入了新的權限模型,該模型使用戶可以更好地理解應用程序為何可能要求特定權限。 現在,不再提示用戶在安裝時盲目接受所有權限,而是提示用戶接受在應用程序使用過程中必要時所必需的權限。
何時實施新模型?
在您選擇在應用程序中定位版本23之前,不需要全面支持。 如果您的目標版本為22或更低版本,則您的應用程序將在安裝時請求所有權限,就像在運行低於棉花糖的操作系統的任何設備上一樣。
此信息從這里獲取:
請從此鏈接檢查如何實施:
如果您的文件存在但無法讀取,請確保以下內容:
-許可。 因為您可以按照您所說的讀取其他文件,所以這可能不是問題。
- 不是文件夾 。 通過file.isDirectory()
檢查它。
- 檢查文件路徑 。 例如,它不應該這樣開頭: file:/...
或/home/storage//th
(當您錯誤地附加兩個破折號時)。
我想這個問題是我的情況非常獨特的。 該文件是系統文件,我的應用未獲得讀取該文件的許可。 我將我的應用程序簽名為系統應用程序后,該問題已得到糾正。
可能的其他解決方案可能是該應用程序具有讀取此類文件的root權限。
謝謝大家的建議和回答!!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.