![](/img/trans.png)
[英]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.