Android:无法使用 bufferedReader 读取文件,而 adb shell 中的 cat 命令 运行 工作正常
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() returns true 对于我的文件,而 File.canRead() returns假。
是否与 administrative/root 访问有关?
adb shell 是否授予您系统的 root 访问权限?
P.S.:我已授予该应用 Read/Write 权限( 根据 API 23)
Android 为 Android 6.0 (Marshmallow) 添加了新的权限模型。
所以你必须检查运行时权限:
什么是运行时权限?
在 Android 6.0 Marshmallow 中,Google 引入了一种新的权限模型,使用户可以更好地理解应用程序可能请求特定权限的原因。用户在安装时不再盲目地接受所有权限,而是在应用程序使用期间必要时提示用户接受权限。
何时实施新模型?
在您选择在您的应用程序中以版本 23 为目标之前,它不需要完全支持。如果您的目标版本为 22 或更低版本,您的应用程序将在安装时请求所有权限,就像在 Marshmallow 以下的任何设备 运行 和 OS 上一样。
此信息取自此处:
请检查link 的实施方法:
如果您的文件存在但无法读取,请确认以下内容:
- 允许。因为你说的可以读取其他文件,所以可能没有问题。
- 不是文件夹。通过 file.isDirectory()
.
检查
- 检查您的文件路径。例如,它不应该这样开头:file:/...
或 /home/storage//th
(当您错误地附加了两个破折号时)。
我想这个问题对我的情况来说非常独特。该文件是一个系统文件,我的应用程序没有被授予读取它的权限。在我 将我的应用程序 签名为 系统应用程序 后,它已得到纠正。
可能的其他解决方案可能是应用程序具有读取此类文件的根权限。
感谢大家的建议和解答!!
我正在尝试使用 Android API=23 中的 bufferedReader 读取系统文件,但出现以下错误:打开失败:EACCES(权限被拒绝).
该文件是只读的。另一方面,adb shell 中的 'cat' 命令 运行 工作正常。
此外,File.exists() returns true 对于我的文件,而 File.canRead() returns假。 是否与 administrative/root 访问有关? adb shell 是否授予您系统的 root 访问权限?
P.S.:我已授予该应用 Read/Write 权限( 根据 API 23)
Android 为 Android 6.0 (Marshmallow) 添加了新的权限模型。
所以你必须检查运行时权限:
什么是运行时权限?
在 Android 6.0 Marshmallow 中,Google 引入了一种新的权限模型,使用户可以更好地理解应用程序可能请求特定权限的原因。用户在安装时不再盲目地接受所有权限,而是在应用程序使用期间必要时提示用户接受权限。
何时实施新模型?
在您选择在您的应用程序中以版本 23 为目标之前,它不需要完全支持。如果您的目标版本为 22 或更低版本,您的应用程序将在安装时请求所有权限,就像在 Marshmallow 以下的任何设备 运行 和 OS 上一样。
此信息取自此处:
请检查link 的实施方法:
如果您的文件存在但无法读取,请确认以下内容:
- 允许。因为你说的可以读取其他文件,所以可能没有问题。
- 不是文件夹。通过 file.isDirectory()
.
检查
- 检查您的文件路径。例如,它不应该这样开头:file:/...
或 /home/storage//th
(当您错误地附加了两个破折号时)。
我想这个问题对我的情况来说非常独特。该文件是一个系统文件,我的应用程序没有被授予读取它的权限。在我 将我的应用程序 签名为 系统应用程序 后,它已得到纠正。
可能的其他解决方案可能是应用程序具有读取此类文件的根权限。
感谢大家的建议和解答!!