Termux没有访问内部存储的权限-即使读取


19

使用termuxhttps://termux.com)终端仿真程序,我键入以下命令:

ls /sdcard

我收到以下错误:

ls: can't open '/sdcard': Permission denied

意识到Android上的/ sdcard目录是一个符号链接,我试图找到实际目录的位置-了解到它不仅是一个符号链接,而且还链接到另一个符号链接,并且实际目录是/ storage / emulated / 0

所以最后,我输入:

ls -ld /storage/emulated/0

我得到的结果是:

drwxrwx--x   63 root     sdcard_r      4096 Aug 10 12:04 /storage/emulated/0

简而言之-我不知道termux是否曾经以sdcard_r组的权限运行,或者o权限是否用于允许读写-但我需要知道它曾经是这两个中的哪个,并且如何解决问题-因为能够访问内部SD卡的内容非常关键。

不,我的设备没有植根,也没有计划植根-因此,我无法提供必须植根于设备的任何信息。但是,过去从未扎根,这使我无法读取对/ sdcard目录的访问权限-因此这是新的(而且很麻烦)。

当然-从以前我尝试这样做已经过去了几个月 -但Android的这一新限制严重妨碍了termux和who-knows- welse的可用性-因为我需要能够访问以下文件在我的SD卡上。(即使没有授权,我仍然可以做很多事情,即使不是所有的事情,但如果我不能获得读取权限,我将陷入困境,就像现在这样。)


嗯,看起来它已获得READ_EXTERNAL_STORAGE许可,因此它应该具有访问权限。
马修(Matthew)阅读了

3
是的---但显然它已关闭。当我进入系统偏好设置>常规>应用程序> Termux -----时,我意识到了这一点,发现有一个拨动开关可以访问由于某种原因而被关闭的文件。不用说-我重新打开它,问题就解决了。------当然,眼前的危机已经过去了,但是这仍然引发了一个问题,即首先导致危机的原因。(我知道我从来没有这样做过。)
user3080003 '16

我遇到了同样的问题,您的回答在这里为我解决了。编辑:愚蠢的进入提交。正在尝试创建新行。我认为这是发生的事情:Android 7现在允许拒绝权限(是!),但是就Termux而言,无论出于何种原因,它都不会像其他程序那样请求权限。因此,问题不在于它已以某种方式关闭,但从未打开过。不过,这是猜测。
安德鲁

3
可以运行termux-setup-storage来使应用程序请求存储权限。请参阅termux.com/storage.html
fornwall

Answers:



5

较新的Android版本要求应用在运行时请求权限。您可能已经注意到了这一点。一个示例是Chrome浏览器在您首次尝试下载内容时要求存储权限。对于Termux,这是一个问题。权限默认为“不允许”,因此,当Termux需要任务的权限时,由于尚未更新Termux来请求这些权限,因此无论如何它都会尝试执行任务并因此引发错误。不幸的是,开发人员必须自己解决此问题。幸运的是,Android为您提供了手动管理应用程序权限的方法。在开发人员相应更新Termux之前,这可能是唯一的方法。

第1步:转到Termux的“应用信息”页面

有多种方法可以访问此页面。由于不同的手机可能具有不同的行为,因此我将所有我知道的都包括在内。

方法1:使用多任务菜单

  1. 打开Termux。
  2. 多任务按钮以打开多任务菜单。该按钮应位于左侧的主页按钮旁边。
  3. 在应用程序列表中,Termux应该是第一个。点击并按住其图标。

    在某些手机上,您已经在信息页面上了。在其他电话上,您会在顶部看到Termux的app-box-thing更改,并在某处显示信息图标(ℹ)。其他手机可能会为您提供带有“应用信息”选项的上下文菜单。在这两种情况下,请点击这些。

方法2:使用通知面板

  1. 打开Termux。您希望出现Termux的通知。
  2. 下拉通知面板,找到Termux的通知。
  3. 请尝试以下方法之一:

    • 向左或向右滑动通知,找到齿轮(⛭)或信息图标(ℹ)并点按它。您无法取消Termux的通知,因此不必担心。
    • 点击并按住通知,然后找到齿轮(gear),信息图标(ℹ)或带有“应用信息”选项的上下文菜单,然后点击它。
    • 查找应用程序图标和/或名称。您可能需要向下滑动通知。点击并按住它。可能会弹出齿轮(⛭),信息图标(ℹ)或上下文菜单。相应地点击。

方法3:使用应用程序管理器

  1. 转到设置>应用。
  2. 查找带有“应用程序管理器”或类似标签的选项。它似乎取决于您的设备。
  3. 查找Termux的条目,然后点按它。您可能必须将过滤器更改为“已安装的应用程序”或“已下载的应用程序”。

步骤2:变更权限

现在,您应该在带有Termux名称,图标和版本号的页面上,并带有两个分别标记为“卸载”和“强制停止”的按钮。下面应该是其他各种选择。

  1. 寻找一个标有“权限”的选项(您可能需要滚动)。点击它。
  2. 应该有一个存储权限条目。单击旁边的开关将其打开。如果未列出“存储”权限,请在Termux中使用与存储相关的命令来获取“拒绝权限”错误并返回。

测试变更

现在,您已授予Termux访问存储的权限。您可以使用以下命令对此进行测试:
ls /sdcard/
如果没有收到“拒绝权限”错误,那就可以了!除非您重新安装Termux,否则无需再次执行此操作。


0

是2017年7月,我遇到了同样的问题,用谷歌搜索,然后到达了这里。马修·雷德(Matthew Read)的评论为解决方案指明了方向,但是没有答案可以清楚地说明问题,因此这里是tl; dr:

Termux在安装时不要求文件系统权限,因此您必须通过Settings => Applications => Termux => Permissions将其打开。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.