使用termux(https://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权限是否允许读取-write-但我需要知道这两个曾经是哪个以及如何解决问题-因为能够访问内部SD卡的内容有点关键。

不,我的设备未植根,也不打算将其植根-因此,我无法提供必须植根设备的任何信息e获取。但是,过去从未扎根,这使我无法读取/ sdcard目录的权限-因此这是新的(而且令人不安)。

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

评论

嗯,看起来它具有READ_EXTERNAL_STORAGE权限,因此它应该具有访问权限。

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

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

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

#1 楼

在Termux Wiki上运行termux-setup-storage后,按照fornwall的建议为我修复了该问题。

然后重新启动Termux。

#2 楼

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

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

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

方法1:使用多任务菜单


打开Termux。
按多任务按钮以打开多任务菜单。它应该在左侧的主页按钮旁边。

在应用程序列表中,Termux应该是第一个。点击并按住其图标。

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


方法2:使用通知面板


打开Termux。您希望出现Termux的通知。
下拉通知面板,找到Termux的通知。

请尝试以下操作之一:


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



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


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

步骤2:更改权限

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


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

测试更改

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

#3 楼

这是2017年7月,我遇到了同样的问题,用谷歌搜索并到达了这里。 Matthew Read的评论指出了解决方案的方法,但是没有答案可以清楚地说明它,所以这是它的tl; dr:

Termux不要求以下文件系统许可安装,因此您必须通过设置=>应用程序=> Termux =>权限打开它