RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 1436505
Accepted
RandomDice 779
RandomDice 779
Asked:2022-08-05 21:02:58 +0000 UTC2022-08-05 21:02:58 +0000 UTC 2022-08-05 21:02:58 +0000 UTC

文件管理器无权访问 /sdcard!

  • 772

我的文件管理器无法访问 /sdcard,即使它有权这样做。当我需要从第三方应用程序中选择文件时(例如,选择将文件保存在 MacroDroid 中的路径),就会出现此问题。文件管理器是“库存”,原始的,在固件中。这是我将其作为独立应用程序打开时的管理器屏幕截图: 在此处输入图像描述

在浏览器和社交网络的情况下,它们不会向整个 /sdcard 发出请求,而是向“最近”发出请求,所以我能够在此处附上这张照片。

我尝试重新安装文件管理器,闪烁/系统 - 无济于事。

我附上了logcat:https ://pastebin.com/74Jtv06B (它只插入一行,因此我把它扔进pastebin,至少可以读取)(我删除了MiXplorer,但问题仍然存在)

UPD:我决定通过 Termux 来“调查”这个问题。发现这个:

# Обратите внимание, что я
# использую строго Termux user,
# в т ч без использования global
# mount namespace

termux@termux: ~ $ mount | grep "/data/media" | column -t | grep "rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal,unshared_obb"
/data/media  on  /mnt/runtime/default/emulated           type  sdcardfs  (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal,unshared_obb)
/data/media  on  /data/local/nhsystem/kali-arm64/sdcard  type  sdcardfs  (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal,unshared_obb)
/data/media  on  /storage/emulated                       type  sdcardfs  (rw,nosuid,nodev,noexec,noatime,fsuid=1023,fsgid=1023,gid=1015,multiuser,mask=6,derive_gid,default_normal,unshared_obb)
termux@termux: ~ $ ls /sdcard -l
/sdcard -> /storage/self/primary
termux@termux: ~ $ ls /storage/self/primary -l
/storage/self/primary -> /storage/emulated/0
termux@termux: ~ $ ls /storage/emulated/0
...
termux@termux: ~ $ ls /data/local/nhsystem/kali-arm64/sdcard
...
termux@termux: ~ $ ls /mnt/runtime/default/emulated/0
ls: Permission denied

据我了解,在默认路径上,我无法访问 sdcard,但为什么?SELinux 允许的。

我查看了文件夹的权限——是的,一切似乎都很好:

termux@termux: ~ $ /sbin/su
root@android: ~ # ls /storage/emulated -l
drwxrwx--x 35 root sdcard_rw 4096 2022-08-10 15:48 0
root@android: ~ # ls /data/local/nhsystem/kali-arm64 -l
...
drwxrwx--x  35 root    sdcard_rw  4096 2022-08-10 15:48 sdcard
...
root@android: ~ # ls /mnt/runtime/default/emulated -l
drwxrwx--x 35 root sdcard_rw 4096 2022-08-10 15:48 0
root@android: ~ # getenforce
Permissive

UPD2:Android 10、Lineage OS 17.1

UPD3:我通过 APK 编辑器重建了默认管理器的 apk(因为仍然通过它进行内存请求)。我将这些行添加到 Manifest.xml(它们最初不存在,我pm grant写道那里没有提供此类权限):

    <uses-permission android:name="android.permission.WRITE_MEDIA_STORAGE" />
    <uses-permission android:name="android.permission.STORAGE_INTERNAL" />

设置中没有出现任何内容,但现在pm grant它给出了无法更改此分辨率的错误:

root@android: ~ # pm grant com.android.documentsui android.permission.WRITE_MEDIA_STORAGE
Security exception: Permission android.permission.WRITE_MEDIA_STORAGE requested by com.android.documentsui is not a changeable permission type

java.lang.SecurityException: Permission android.permission.WRITE_MEDIA_STORAGE requested by com.android.documentsui is not a changeable permission type
    at com.android.server.pm.permission.BasePermission.enforceDeclaredUsedAndRuntimeOrDevelopment(BasePermission.java:448)
    at com.android.server.pm.permission.PermissionManagerService.grantRuntimePermission(PermissionManagerService.java:2181)
    at com.android.server.pm.permission.PermissionManagerService.access$1000(PermissionManagerService.java:122)
    at com.android.server.pm.permission.PermissionManagerService$PermissionManagerServiceInternalImpl.grantRuntimePermission(PermissionManagerService.java:3167)
    at com.android.server.pm.PackageManagerService.grantRuntimePermission(PackageManagerService.java:5846)
    at com.android.server.pm.PackageManagerShellCommand.runGrantRevokePermission(PackageManagerShellCommand.java:1955)
    at com.android.server.pm.PackageManagerShellCommand.onCommand(PackageManagerShellCommand.java:230)
    at android.os.ShellCommand.exec(ShellCommand.java:104)
    at com.android.server.pm.PackageManagerService.onShellCommand(PackageManagerService.java:22020)
    at android.os.Binder.shellCommand(Binder.java:881)
    at android.os.Binder.onTransact(Binder.java:765)
    at android.content.pm.IPackageManager$Stub.onTransact(IPackageManager.java:4876)
    at com.android.server.pm.PackageManagerService.onTransact(PackageManagerService.java:4110)
    at android.os.Binder.execTransactInternal(Binder.java:1021)
    at android.os.Binder.execTransact(Binder.java:994)

我尝试重新安装 - 无济于事

root@android: / # mount -o remount /mnt/runtime/default/emulated
Error: /mnt/runtime/default/emulated not in /proc/mounts

restorecon不起作用:

root@android: /mnt/runtime/default # restorecon -F -R default
SELinux: Loaded file_contexts
SELinux: Could not set context for /mnt/runtime/default/emulated:  Operation not supported on transport endpoint
restorecon: restorecon failed: default

UPD:logcat 中的错误:“默认根 URI 不是有效的根 URI”。问题:如何设置您的默认根 URI

UPD:我的默认文件管理器根本没有权限,但系统将其添加到 sdcard_rw 组,正如它所说/data/system/packages.list

root@termux: ~ # cat /data/system/packages.list | grep com.android.documentsui
com.android.documentsui 10074 0 /data/user/0/com.android.documentsui platform:privapp:targetSdkVersion=28 1028,1015,1023 0 29
android память
  • 1 1 个回答
  • 129 Views

1 个回答

  • Voted
  1. Best Answer
    Eugene X
    2022-08-18T07:39:38Z2022-08-18T07:39:38Z

    提前声明,我不是Andriod 9,10,11程序员,只是个金属程序员。曾几何时,我还是个孩子的时候,我很努力地弄坏了 KindleFire,然后我做了一段时间的手机/笔记本电脑维修工......

    但我仍然会尽量澄清一点,你看,它会有所帮助。

    让我们从一个事实开始,android.permission.STORAGE_INTERNAL如果没有实业家的签名,似乎有人不会给你。android.permission.WRITE_MEDIA_STORAGE这只能访问媒体文件,即文件夹照片、视频、音频。(检查媒体文件夹中的录音本身)

    我可能错了:值得检查 - 在 Android/sdcard中,负责的是外部存储,而高级外部存储通常负责真正 SD 卡的文件夹......

    事实证明:你突破 Root Hack 的只不过是一个虚拟驱动程序。事实上,你告诉驱动程序做什么是这样的——驱动程序在硬件上重复这个。

    经证实的事实:不要忘记,每个手机开发人员都有权选择对硬件的访问权限,以及这种访问权限是否可用。同样的 SL930A 不会让任何人在任何地方访问,只有他们自己的软件。一般有硬核,几乎没有应用程序正常工作。

    而且我也被日志弄得很糊涂,整理了一下……其实Fatal……

    05 15:22:55.243 12872 12872 E AndroidRuntime: FATAL EXCEPTION: main
    05 15:22:55.243 12872 12872 E AndroidRuntime: Process: com.android.documentsui, PID: 12872
    05 15:22:55.243 12872 12872 E AndroidRuntime: java.lang.RuntimeException: Default Root URI is not a valid root URI.
    05 15:22:55.243 12872 12872 E AndroidRuntime:        at com.android.documentsui.base.Shared.getDefaultRootUri(Shared.java:240)
    05 15:22:55.243 12872 12872 E AndroidRuntime:        at com.android.documentsui.AbstractActionHandler.loadHomeDir(AbstractActionHandler.java:551)
    05 15:22:55.243 12872 12872 E AndroidRuntime:        at com.android.documentsui.picker.ActionHandler.loadDefaultLocation(ActionHandler.java:228)
    

    Default Root URI is not a valid root URI.同样,典型用户只是提供对外部存储的访问权限。

    PS:还有一个事实:为什么内部存储和外部存储之间存在这种混淆 - 因为存储桶的第一个版本根本没有提供手机将拥有自己的空间大小的内存。并且决定 /sdcard 真的是一张 SD 卡。这最终导致了痔疮大小的空间。最有可能的是,他们从未修复它,以便与旧应用程序向后兼容。

    PSS:我给出的答案不是为了奖金,而是希望如果它对您有所帮助,那么您将完全取消订阅正确的答案,这将有助于许多程序员解决类似的问题。我真的希望我的回答对您有所帮助。

    • 1

相关问题

  • 来自片段的列表落后于 BottomNavigationView

  • 无法将变量从 Activity 传递到 Fragment

  • 构建与完成的片段略有不同的片段的最佳方法是什么?

  • 如何更改来自服务器的响应中的日期格式?

  • 谷歌地图在应用程序的发布版本中不起作用

  • 材料设计按钮。单击按钮上的可选区域!

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    我看不懂措辞

    • 1 个回答
  • Marko Smith

    请求的模块“del”不提供名为“default”的导出

    • 3 个回答
  • Marko Smith

    "!+tab" 在 HTML 的 vs 代码中不起作用

    • 5 个回答
  • Marko Smith

    我正在尝试解决“猜词”的问题。Python

    • 2 个回答
  • Marko Smith

    可以使用哪些命令将当前指针移动到指定的提交而不更改工作目录中的文件?

    • 1 个回答
  • Marko Smith

    Python解析野莓

    • 1 个回答
  • Marko Smith

    问题:“警告:检查最新版本的 pip 时出错。”

    • 2 个回答
  • Marko Smith

    帮助编写一个用值填充变量的循环。解决这个问题

    • 2 个回答
  • Marko Smith

    尽管依赖数组为空,但在渲染上调用了 2 次 useEffect

    • 2 个回答
  • Marko Smith

    数据不通过 Telegram.WebApp.sendData 发送

    • 1 个回答
  • Martin Hope
    Alexandr_TT 2020年新年大赛! 2020-12-20 18:20:21 +0000 UTC
  • Martin Hope
    Alexandr_TT 圣诞树动画 2020-12-23 00:38:08 +0000 UTC
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5